Input + Output = True

javascript 'use strict'๋ž€? ๋ณธ๋ฌธ

๐ŸŽจ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

Comments