🎨FrontEnd/Javascript

javascript 'use strict'λž€?

IOTrue 2023. 7. 19. 00:26

😎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)

 

 

 

 

μ°Έκ³ 

https://poiemaweb.com/js-strict-mode

http://www.tcpschool.com/javascript/js_exception_strict