π‘ 1. Strict mode
function func(){
x = 1;
}
func();
- μ μ½λλ₯Ό μ€νμ μν€λ©΄ μ€νμ΄ μ λ©λλ€. κ·Έλ¬ν μ΄μ λ μλ°μ€ν¬λ¦½νΈλ xκ° μ΄λμμ μ μΈμ΄ λμλμ§ μ²μμλ ν¨μ λ΄μμ μ°Ύμλ΄ λλ€. ν¨μ μμμ μμΌλ©΄ ν¨μ λ°μΌλ‘ λμ μ μ λ³μμμ μ°Ύμλ΄ λλ€. λ§μ½ μ μ λ³μμμλ μμΌλ©΄ μλ¬λ λ΄λ κ²μ΄ μλλΌ, μ묡μ μΌλ‘ μ μ κ°μ²΄μ xλΌλ λ³μ λμ μΌλ‘ μμ±ν©λλ€. μ΄λ¬ν λ³μλ₯Ό μ묡μ μ μ λ³μ(implicit global)λΌ ν©λλ€. κ°λ°μμ μλμλ μκ΄μμ΄ μ묡μ μ μ λ³μκ° μμ±μ΄ λκ³ μ€νλλ κ²μ λ§κΈ° μν΄ ES5λΆν°λ strict modeκ° μΆκ°λμμ΅λλ€.
'use strict'
function func(){
x = 10; // Uncaught ReferenceError: x is not defined
}
func();
- strict modeλ₯Ό μ¬μ©νκΈ° μν΄μλ μ½λ μλ¨μ 'use strict'λ₯Ό μμ±νκ³ μ½λλ₯Ό μμ±νλ©΄ λ©λλ€.
- use strictκ° μ΄λμ μμ±λμλμ λ°λΌ μ΄λ€ λΆλΆμ μ묡μ μ μ λ³μ μμ±μ νμ©νκ² λκ³ , μ΄λ€ λΆλΆμ νμ©μ μ νκ² λ©λλ€.
π£ use strictκ° ν¨μ λ¨μλ‘ μλ κ²½μ°
// use strictκ° ν¨μ μμ μλ κ²½μ°
function func () {
x = 10; // μλ¬κ° λ°μνμ§ μμ
}
function func2() {
'use strict';
y = 20; // Uncaught ReferenceError: y is not defined
}
func();
func2();
π£ use strictκ° μ μμΌλ‘ μλ κ²½μ°
// use strictμ μ μ λμ μλ κ²½μ°
'use strict';
function func () {
x = 10; // Uncaught ReferenceError: x is not defined
}
function func2() {
y = 20; // Uncaught ReferenceError: y is not defined
}
func();
func2();
π’ use strict μ¬μ© μ μ£Όμ μ¬ν
1. μ€ν¬λ¦½νΈ μ μμ μ¬μ©νμ§ λ§κΈ°.
// μ μμ μ¬μ©νμ§ λ§κΈ°
<!DOCTYPE html>
<html>
<body>
<script>
'use strict';
</script>
<script>
x = 1; // μλ¬κ° λ°μνμ§ μλλ€.
console.log(x); // 1
</script>
<script>
'use strict';
y = 1; // ReferenceError: y is not defined
console.log(y);
</script>
</body>
</html>
- μ μμ μ¬μ©ν κ²½μ° μ μ©ν μ€ν¬λ¦½νΈμμλ§ μλμ νλ―λ‘, use strictλ₯Ό μ¬μ©νμ§ μλ μ€ν¬λ¦½νΈμ μΆ©λμ΄ λ μ μμ΅λλ€.
2. ν¨μ λ¨μλ‘ μ¬μ©νμ§ λ§κΈ°.
// ν¨μ λ¨μλ‘ μ μ© X
function func1(){
'use strict';
x = 100; //Uncaught ReferenceError: x is not defined
}
function func2() {
'use strict';
y = 10; //Uncaught ReferenceError: y is not defined
}
- μΌμΌμ΄ strict modeλ₯Ό μ μ©νλ κ²μ΄ λ²κ±°λ‘μ΄ μΌμ΄κΈ°λ νκ³ , μΈλΆμ μ½ν μ€νΈλ₯Ό μ°Έμ‘°ν λ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
3. μ¦μ μ€ν ν¨μλ‘ κ°μΌ μ€ν¬λ¦½νΈ λ¨μλ‘ μ¬μ©νκΈ°.
(function (){
'use strict';
let a = 10;
let b = 20;
}());
π ESLint
- use strict λμ ESLintλΌλ νμ₯ λꡬλ₯Ό μ¬μ©νλ©΄ λ³΄λ€ μ μ©νκ² μ½λ©μ ν μ μμ΅λλ€.
π μ 리
- μλ°μ€ν¬λ¦½νΈμμλ μ μΈνμ§ μμ λ³μμ κ°μ ν λΉνλ©΄ μ묡μ μΌλ‘ μ μ λ³μκ° μμ±μ΄ λλ€.
- μ묡μ μ μ λ³μ μμ±μ λ§κΈ° μν΄ strict modeλ₯Ό μ¬μ©νλ€.
- strict modeλ₯Ό μ¬μ©νκΈ° μν΄μλ 'use strict'λ₯Ό μ°κ³ νλ¨μ μ½λλ₯Ό μμ±νλ©΄ λλ€.
- μ¦μ μ€ν ν¨μλ‘ κ°μΌ μ€ν¬λ¦½νΈ λ¨μλ‘ μ¬μ©νλ κ²μ΄ λ°λμ§νλ€.
κΈ΄ κΈ μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€ :)
νλ¦° λ΄μ©μ΄ μκ±°λ, λ§λΆμΌ λ΄μ©μ΄ μλ€λ©΄ μΈμ λ μ§ λκΈ λ¬μμ£ΌμΈμ!
μ κΈμ΄ μ‘°κΈμ΄λλ§ μ½μΌμ λΆλ€μκ² λμμ΄ λλλ‘ λ
Έλ ₯νκ² μ΅λλ€
λ€μ νΈμ 봬μ~