ìë°ì¤í¬ë¦½í¸ë 꽤 ì¤ë«ëì í¸íì± ì´ì ìì´ ë°ì í´ììµëë¤. 기존ì 기ë¥ì ë³ê²½íì§ ìì¼ë©´ì ìë¡ì´ 기ë¥ì´ ì¶ê°ëìì£ .
ëë¶ì 기존ì ìì±í ì½ëë ì ë ë§ê°ì§ì§ ìëë¤ë ì¥ì ì´ ìììµëë¤. íì§ë§ ìë°ì¤í¬ë¦½í¸ ì°½ììë¤ì´ íë ì¤ìë ë¶ìì í ê²°ì ì´ ì¸ì´ ìì ììí ë°ì ëë¤ë ë¨ì ë ìê²¼ìµëë¤.
ì´ë° ìí©ì ECMAScript5(ES5)ê° ë±ì¥í기 ì ì¸ 2009ë
ê¹ì§ ì§ìëììµëë¤. ê·¸ë°ë° ìë¡ê² ì ì ë ES5ììë ìë¡ì´ 기ë¥ì´ ì¶ê°ëê³ ê¸°ì¡´ ê¸°ë¥ ì¤ ì¼ë¶ê° ë³ê²½ëììµëë¤. 기존 기ë¥ì ë³ê²½íì기 ë문ì íì í¸íì± ë¬¸ì ê° ì길 ì ìê² ì£ ? ê·¸ëì ë³ê²½ì¬í ëë¶ë¶ì ES5ì 기본 모ëìì íì±íëì§ ìëë¡ ì¤ê³ëììµëë¤. ëì use strictë¼ë í¹ë³í ì§ìì를 ì¬ì©í´ ì격 모ë(strict mode)를 íì±í íì ëë§ ì´ ë³ê²½ì¬íì´ íì±íëê² í´ëììµëë¤.
use strict
ì§ìì "use strict", í¹ì 'use strict'ë ë¨ìí 문ìì´ì²ë¼ ìê²¼ìµëë¤. íì§ë§ ì´ ì§ììê° ì¤í¬ë¦½í¸ ìµìë¨ì ì¤ë©´ ì¤í¬ë¦½í¸ ì ì²´ê° â모ëíâ ë°©ìì¼ë¡ ëìí©ëë¤.
ìì:
"use strict";
// ì´ ì½ëë 모ëí ë°©ìì¼ë¡ ì¤íë©ëë¤.
...
ëª
ë ¹ì´ë¥¼ 그룹ííë ë°©ìì¸ í¨ìì ëí´ì ê³§ íìµíëë¡ íê² ìµëë¤. í¨ìì ëí´ íìµí기 ì ì, "use strict"ë ì¤í¬ë¦½í¸ ìµìë¨ì´ ìë í¨ì 본문 맨 ìì ì¬ ìë ìë¤ë ì ì ììëì기 ë°ëëë¤. ì´ë ê² íë©´ ì¤ì§ í´ë¹ í¨ìë§ ì격 모ëë¡ ì¤íë©ëë¤. ì격 모ëë ëê° ì¤í¬ë¦½í¸ ì ì²´ì ì ì©íì§ë§ ë§ì´ì£ .
"use strict"ë ì¤í¬ë¦½í¸ ìµìë¨ì ìì´ì¼ íë¤ë ì ì ìì§ ë§ì¸ì. ê·¸ë ì§ ìì¼ë©´ ì격 모ëê° íì±íëì§ ìì ìë ììµëë¤.
ë¤ì ì½ëììë ì격 모ëê° íì±íëì§ ììµëë¤.
alert("some code");
// íë¨ì ìì¹í "use strict"ë ì¤í¬ë¦½í¸ ìë¨ì ìì¹íì§ ìì¼ë¯ë¡ 무ìë©ëë¤.
"use strict";
// ì격 모ëê° íì±íëì§ ììµëë¤.
"use strict"ì ììë 주ìë§ ì¬ì©í ì ììµëë¤.
use strict를 ì·¨ìí ë°©ë²ì ììµëë¤.ìë°ì¤í¬ë¦½í¸ ìì§ì ì´ì ë°©ìì¼ë¡ ëë리ë "no use strict"ê°ì ì§ììë ì¡´ì¬íì§ ììµëë¤.
ì¼ë¨ ì격 모ëê° ì ì©ëë©´ ëì´í¬ ë°©ë²ì ììµëë¤.
ë¸ë¼ì°ì ì½ì
ê°ë°í 기ë¥ì í
ì¤í¸í기 ìí´ ë¸ë¼ì°ì ì½ìì ì¬ì©íë ê²½ì°, 기본ì ì¼ë¡ use strictê° ì ì©ëì´ìì§ ìëë¤ë ì ì 주ìíì
ì¼ í©ëë¤.
use strictì ìí¥ì ë°ë ê²½ì°ë¼ë©´ ê°ë°ìë 기ëíì§ ììë 결과를 ì»ì ì ì기 ë문ì
ëë¤.
ê·¸ë ë¤ë©´ ì´ë»ê² í´ì¼ ì½ììì use strict를 ì¬ì©í ì ììê¹ì?
'use strictâ를 ì
ë ¥í í, Shift+Enterí¤ë¥¼ ëë¬ ì¤ ë°ê¿ í´ ìíë ì¤í¬ë¦½í¸ë¥¼ ì
ë ¥íë©´ ë©ëë¤. ìëì ê°ì´ ë§ì´ì£ .
'use strict'; <Shift+Enter를 ëë¬ ì¤ ë°ê¿ í¨>
// ...í
ì¤í¸íë ¤ë ì½ë ì
ë ¥
<Enter를 ëë¬ ì¤í>
ì´ ê¸°ë¥ì Firefoxì Chrome ê°ì ì ëª í ë¸ë¼ì°ì ìì ëë¶ë¶ ì¬ì© ê°ë¥í©ëë¤.
ë¸ë¼ì°ì ê° ì¤ë ëì´ì ì½ì ì°½ì use strict를 ì
ë ¥íë ê² ë¶ê°ë¥íë¤ë©´, use strict를 ì ì©íë ê°ì¥ íì¤í ë°©ë²ì ìëì ê°ì´ ì½ë를 ëí¼ë¡ ê°ì¸ë©´ ë©ëë¤.
(function() {
'use strict';
// ...í
ì¤í¸íë ¤ë ì½ë...
})()
'use strictâ를 ê¼ ì¬ì©í´ì¼ íëì
"ë¹ì°í ì¬ì©í´ì¼ íë ê±° ìëì¼?"ë¼ë ìê°ì´ ëìê² ì§ë§, ê¼ ê·¸ë ì§ë§ì ììµëë¤.
ëêµ°ê°ë ì¤í¬ë¦½í¸ 맨 ìì¤ì "use strict"를 ë£ë ê² ì¢ë¤ê³ ê¶ì í ì ììµëë¤. ê·¸ë°ë° 그거 ìì¸ì?
모ë ìë°ì¤í¬ë¦½í¸ë 'í´ëì¤âì '모ëâì´ë¼ ë¶ë¦¬ë ì§ì¼ë³´í 구조를 ì ê³µí©ëë¤(í´ëì¤ì 모ëì ëí´ì ë¹ì°í ë¤ìì íìµí ìì ì
ëë¤). ì´ ëì ì¬ì©íë©´ use strictê° ìëì¼ë¡ ì ì©ëì£ . ë°ë¼ì ì´ ëì ì¬ì©íê³ ìë¤ë©´ ì¤í¬ë¦½í¸ì "use strict"를 ë¶ì¼ íìê° ììµëë¤.
ê²°ë¡ ì ì´ë ìµëë¤. ì½ë를 í´ëì¤ì 모ëì ì¬ì©í´ 구ì±íë¤ë©´ "use strict"를 ìëµí´ë ë©ëë¤. ê·¸ë°ë° ìì§ì ì´ ëì ë°°ì°ì§ ììì¼ë "use strict"를 ê·í ìëì²ë¼ 모ìëë¡ íê² ìµëë¤.
ì§ê¸ê¹ì§ë use strictì ì¼ë°ì ì¸ í¹ì§ì ëí´ ììë³´ììµëë¤.
ë¤ì ì±í°ë¶í°ë ìë°ì¤í¬ë¦½í¸ ì¸ì´ê° ì ê³µíë 기ë¥ë¤ì íëì© íìµíë©´ì ì´ ê¸°ë¥ë¤ì´ ì격 모ëì ë¹ ì격 모ëìì ì´ë¤ ì°¨ì´ì ì ë³´ì´ëì§ ììë³´ê² ìµëë¤. í¬ììì ìë ¤ë리ìë©´ ë 모ëìì ì°¨ì´ë¥¼ ë³´ì´ë 기ë¥ì´ ë§ì§ ìë¤ë ì ê³¼ ì격 모ë를 ì¬ì©íë©´ ê°ë°ìì ì¶ì ì§ì´ ì¡°ê¸ ë ëìì§ë¤ë ì ì ëë¤.
ê·¸ë¦¬ê³ í¹ë³í ì¸ê¸ì´ ìë í ì´ íí 리ì¼ì ë±ì¥íë 모ë ììì ì격 모ë를 ì ì©í ìì ì ëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.