๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋…์„œ ๋ชฉ๋ก/๋ชจ๋”ฅ๋‹ค Modern JS Deep Dive

[๋ชจ๋”ฅ๋‹ค] 20์žฅ Strict Mode

728x90

๐ŸŒฝ 20.1 strict mode๋ž€?

 

์„ ์–ธํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ReferenceError๊ฐ€ ์ƒ๊ธธ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์‚ฌ์‹ค ์•„๋‹˜. 

JS๊ฐ€ ์•”๋ฌต์ ์œผ๋กœ ์ „์—ญ ๊ฐ์ฒด์— ๋ณ€์ˆ˜-> ํ”„๋กœํผํ‹ฐ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•จ. 

=> ์•”๋ฌต์  ์ „์—ญ

 

์•”๋ฌต์  ์ „์—ญ์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์˜ ์›์ธ์ด ๋  ํ™•๋ฅ ์ด ๋†’์Œ. 

๊ทธ๋Ÿฌ๋‹ˆ ๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ๋ฅผ ๊ผญ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผํ•จ. 

 

ํ•˜์ง€๋งŒ ์‹ค์ˆ˜๋Š” ์–ธ์ œ๋‚˜ ๋ฐœ์ƒํ•˜๋Š”๋ฐ -> ์ด๋Ÿฐ ์ž ์žฌ์  ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์–ด๋ ค์šด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š”๊ฒŒ ๋” ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ์ฑ…์ž„. 

 

strict mode (์—„๊ฒฉ ๋ชจ๋“œ) 

- ES5 ๋ถ€ํ„ฐ ์ถ”๊ฐ€๋จ. 

- JS ์˜ ๋ฌธ๋ฒ•์„ ์ข€ ๋” ์—„๊ฒฉํžˆ ์ ์šฉ

-> ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ฑฐ๋‚˜,

-> JS ์—”์ง„์˜ ์ตœ์ ํ™” ๋ฌธ์ œ์— ์ž‘์—…์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด

=> ๋ช…์‹œ์ ์ธ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด. 

 

ESLint

- strict mode ์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ.

- ๋ฆฐํŠธ๋„๊ตฌ๋Š” ์ •์  ๋ถ„์„๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „, ์Šค์บ” 

=> ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜ ๋ฟ ์•„๋‹ˆ๋ผ ์ž ์žฌ์  ์˜ค๋ฅ˜๊นŒ์ง€ ์ฐพ์•„๋‚ด๊ณ , ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ฆฌํฌํŒ… ํ•ด์คŒ. 

- strict mode ๊ฐ€ ์ œํ•œํ•˜๋Š” ์˜ค๋ฅ˜ + ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ์„ค์ • ํŒŒ์ผ์˜ ํ˜•ํƒœ๋กœ ์ •์˜ํ•˜๊ณ  ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์Œ.

- strict mode ๊ฐ€ ๋” ๊ฐ•๋ ฅํ•จ. 

 

 

 

 

๐ŸŒฝ 20.2 strict mode ์˜ ์ ์šฉ

 

์ „์—ญ์˜ ์„ ๋‘ (๋งจ ์œ„) ํ˜น์€ ํ•จ์ˆ˜์˜ ์„ ๋‘์— 'use strict'; ์ถ”๊ฐ€

์ „์—ญ -> ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด์— strict mode ์ ์šฉ๋จ

ํ•จ์ˆ˜ -> ํ•ด๋‹น ํ•จ์ˆ˜์™€ ์ค‘์ฒฉ ํ•จ์ˆ˜์— ์ ์šฉ๋จ. 

 

๋งจ ์œ„์— ์•ˆ์“ฐ๋ฉด ๋ง์—†์ด ๋™์ž‘ ์•ˆํ•จ.

 

 

 

 

๐ŸŒฝ 20.3 ์ „์—ญ์— strict mode ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•˜์ž

 

์Šคํฌ๋ฆฝํŠธ ๋‹จ์œ„๋กœ ์ ์šฉ๋˜๋Š”๋ฐ, ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ. 

๊ทธ๋Ÿผ ์ ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ๋ž‘ ์•„๋‹Œ ์Šคํฌ๋ฆฝํŠธ๋ž‘ ํ˜ผ์žฌ๋  ์ˆ˜๋„ ์žˆ๊ณ , ์ด๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Œ. 

 

 

 

 

 

๐ŸŒฝ 20.4 ํ•จ์ˆ˜ ๋‹จ์œ„๋กœ strict mode ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ”ผํ•˜์ž

 

๋ชจ๋“  ํ•จ์ˆ˜์— ์ผ์ผ์ด ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ฒˆ๊ฑฐ๋กœ์›€. 

์ ์šฉ๋œ ํ•จ์ˆ˜๊ฐ€ ์ฐธ์กฐํ•  ์™ธ๋ถ€ ์ปจํ…์ŠคํŠธ์— strict mode ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ด๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ๋จ. 

 

 

 

 

๐ŸŒฝ 20.5  strict mode ๊ฐ€ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์—๋Ÿฌ

 

20.5.1 ์•”๋ฌต์  ์ „์—ญ

์„ ์–ธํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ReferenceError ๋ฐœ์ƒ

 

20.5.2 ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์‚ญ์ œ

delete ๋กœ ์‚ญ์ œํ•˜๋ฉด SyntaxError ๋ฐœ์ƒ

(์—„๊ฒฉ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ์—๋Ÿฌ ๋œธ)

 

20.5.3 ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์ค‘๋ณต

SyntaxError ๋œธ. 

 

20.5.4 with ๋ฌธ์˜ ์‚ฌ์šฉ

with ๋ฌธ์€ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๋ฅผ ์Šค์ฝ”ํ”„ ์ฒด์ธ์— ์ถ”๊ฐ€ํ•จ. SyntaxError ๋œธ. 

 

 

 

 

 

๐ŸŒฝ 20.6  strict mode ์ ์šฉ์— ์˜ํ•œ ๋ณ€ํ™”

 

20.6.1 ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ this

ํ•จ์ˆ˜๋ฅผ ์ผ๋ฐ˜ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœํ•˜๋ฉด this์— undefined ๊ฐ€ ๋ฐ”์ธ๋”ฉ๋จ. 

์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์•„๋‹ˆ๋ผ์„œ ํ•„์š”์—†๊ธฐ ๋•Œ๋ฌธ. 

์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ. 

 

20.6.2 arguments ๊ฐ์ฒด

๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌ๋  ์ธ์ˆ˜๋ฅผ ์žฌํ• ๋‹นํ•ด์„œ ๋ณ€๊ฒฝํ•ด๋„ arguments ๊ฐ์ฒด์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ. 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•