ReferenceError: assignment to undeclared variable "x"
ë©ìì§
ReferenceError: assignment to undeclared variable "x" (Firefox)
ReferenceError: "x" is not defined (Chrome)
ReferenceError: Variable undefined in strict mode (Edge)
ìë¬ íì
ì격 모ë(strict mode)ììë§ ë°ìíë ReferenceError ê²½ê³ .
무ìì´ ì못ëììê¹?
ì ì¸ëì§ ìì ë³ìë¡ ê°ì í ë¹ëììµëë¤. var í¤ìëê° ìì´ í ë¹ì´ ë ê²ì
ëë¤. ì ì¸ë ë³ìì ì ì¸ëì§ ìì ë³ì ì¬ì´ìë ì°¨ì´ê° ìëë°, ì´ë ììì¹ ëª»í 결과를 ê°ì ¸ì¤ë©°, ë문ì JavaScript ì격모ëììë ìë¬ë¥¼ ë°ììí¤ê³ ììµëë¤.
ì ì¸ë ë³ìì ì ì¸ëì§ ìì ë³ìì ëíì¬ ê¸°ìµí´ì¼ í ì¸ ê°ì§:
- ì ì¸ë ë³ìë ì ì¸ë ì¤í ë§¥ë½ ë´ìì ì구ë©ëë¤. ì ì¸ëì§ ìì ë³ìë íì ì ìì í¹ì±ì ë±ëë¤.
- ì ì¸ë ë³ìë ì½ëê° ì¤íë기 ì ì ìì±ë©ëë¤. ì ì¸ëì§ ìì ë³ìë ì¤íì ìí´ í ë¹ì´ ì¼ì´ë ëê¹ì§ ì¡´ì¬íì§ ììµëë¤.
- ì ì¸ë ë³ìë ì¤í ë§¥ë½ ë´(í¨ìë ì ìì ì¸)ìì ë³ê²½ ë¶ê°í ììì ëë¤. ì ì¸ëì§ ìì ë³ìë ë³ê²½ì´ ê°ë¥í©ëë¤. (ìì ë ìë ììµëë¤.)
ë ë§ì ì¤ëª
ê³¼ ìì 를 íìë¡ íë¤ë©´ ì´ var 참조문ì íì´ì§ë¥¼ ë³´ì¸ì.
ì ì¸ëì§ ìì ë³ì í ë¹ì ëí ìë¬ë ì격 모ë(strict mode code)ììë§ ë°ìí©ëë¤. ë¹-ì격 ì½ëììë ì¡°ì©í 묵ì¸ë©ëë¤.
ì
>íì©ëì§ ìë ê²½ì°
ì´ë° ê²½ì°ìë, ë³ì "bar"ë ì ì¸ëì§ ìì ë³ìê° ë©ëë¤.
function foo() {
"use strict";
bar = true;
}
foo(); // ReferenceError: assignment to undeclared variable bar
íì©ëë ê²½ì°
"bar" 를 ì ì¸ë ë³ìë¡ ë§ë¤ê¸° ìí´ì, var í¤ìë를 ë³ìëª
ìì ë¶ì¬ì¤ëë¤.
function foo() {
"use strict";
var bar = true;
}
foo();