javascript 'use strict'λ?
πJavascript] 'use strict'
β μ격λͺ¨λ (use strict)
'use strict'λ μλ°μ€ν¬λ¦½νΈμμ μ격λͺ¨λλ₯Ό μ€ννλ€
μ격λͺ¨λλ μ μΈνμ§ μμ λ³μλ₯Ό μ¬μ©ν μ μκ² λλ λ± μλ°μ€ν¬λ¦½νΈ μμ§μ μ격ν κΈ°μ€μ΄ μ μ©λλ κ²μ λ§νλ€
μ격λͺ¨λμ μ¬μ© μ¬λΆμ λ°λ₯Έ μ°¨μ΄μ μ μ΄ν΄λ³΄μ
function test() {
x = 5
}
test()
console.log(x) // 5
μ μΈλμ§ μμ λ³μ xλ₯Ό μ¬μ©νκΈ° λλ¬Έμ μλ¬κ° μΆλ ₯λ κ² κ°μ§λ§ μ€νν΄λ³΄λ©΄ μ μ μλνλ€
μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ묡μ μΌλ‘ μ μ λ³μλ₯Ό μμ±νκΈ° λλ¬Έμ μ μ μλνκ² λλ€κ·Έλ κΈ° λλ¬Έμ μλμ μ½λλ trueκ° λλ€
function test() {
x = 5
}
test()
console.log(x) // 5
console.log(window.x === x) // true
'use strict'λ₯Ό μ μ©νλ€λ©΄ μλμ μμ μ²λΌ xκ° μ μλμ§ μμλ€ λΌλ μλ¬κ° μΆλ ₯λλ€
'use strict'
function test() {
x = 5
}
test()
console.log(x) // Uncaught ReferenceError: x is not defined
'use strict'λ₯Ό μλ°μ€ν¬λ¦½νΈ νμΌ μ΅μλ¨μ λͺ
μνλ©΄ μ€ν¬λ¦½νΈ μ 체μ μ격λͺ¨λκ° μ μ©λκ³
ν¨μλ΄μ λͺ
μνλ©΄ ν΄λΉ ν¨μ λ° μ€μ²© ν¨μμ μ격λͺ¨λκ° μ μ©λλ€
μ격λͺ¨λκ° μ μ©λλ λ¬Έλ²μ μλμ νλ₯Ό ν΅ν΄ μ°Έκ³ ν μ μλ€
λμ | μ ν μ¬ν |
λ³μ | μ μΈλμ§ μμ λ³μλ κ°μ²΄λ₯Ό μ¬μ©ν μ μμ |
eval() ν¨μ λ΄μμ μ μΈλ λ³μλ μΈλΆμμ μ¬μ©ν μ μμ | |
νλ‘νΌν° | μ½κΈ° μ μ© νλ‘νΌν°μλ λμ ν μ μμ |
ν νλ‘νΌν°λ₯Ό μ¬λ¬ λ² μ μν μ μμ | |
ν¨μ | ν¨μλ₯Ό ꡬ문μ΄λ λΈλ‘ λ΄μμ μ μΈν μ μμ |
λ§€κ°λ³μ | λ§€κ°λ³μμ μ΄λ¦μ΄ μ€λ³΅λμ΄μλ μλ¨ |
arguments κ°μ²΄μ μμ κ°μ λ³κ²½ν μ μμ | |
λ¬Έμμ΄ | λ¬Έμμ΄ "eval"κ³Ό "arguments"λ μ¬μ©ν μ μμ |
8μ§μ | μ«μ 리ν°λ΄μ 8μ§μ κ°μ λμ ν μ μμ |
this | this ν¬μΈν°κ° κ°λ₯΄ν€λ κ°μ΄ nullμ΄λ undefinedμΈ κ²½μ° μ μ κ°μ²΄λ‘ λ³νλμ§ μμ |
delete | delete ν€μλλ₯Ό μ¬μ©ν μ μμ |
with | with λ¬Έμ μ¬μ©ν μ μμ |
μμ½μ΄ | λ€μ μμ½μ΄λ€μ μ¬μ©ν μ μμ (implements, interface, let, package, private, protected, public, static, yield) |
μ°Έκ³