strict mode

YeonnΒ·2024λ…„ 2μ›” 18일
0

JavaScript

λͺ©λ‘ 보기
17/23
post-thumbnail

🎈strict mode ?
μžλ°”μŠ€ν¬λ¦½νŠΈ μ–Έμ–΄μ˜ 문법을 μ’€ 더 μ—„κ²©νžˆ μ μš©ν•˜μ—¬ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ κ°€λŠ₯성이 λ†’κ±°λ‚˜ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ˜ μ΅œμ ν™” μž‘μ—…μ— 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆλŠ” μ½”λ“œμ— λŒ€ν•΄ λͺ…μ‹œμ μΈ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚¨λ‹€ ! ESLint 같은 린트 도ꡬλ₯Ό μ‚¬μš©ν•΄λ„ strict mode와 μœ μ‚¬ν•œ 효과λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

βœ”οΈ ESLint ?

strict modeκ°€ μ œν•œν•˜λŠ” 였λ₯˜λŠ” λ¬Όλ‘  μ½”λ”© μ»¨λ²€μ…˜μ„ μ„€μ • 파일 ν˜•νƒœλ‘œ μ •μ˜ν•˜κ³  κ°•μ œν•  수 있기 λ•Œλ¬Έμ— λ”μš± κ°•λ ₯ν•œ 효과λ₯Ό λ³Ό 수 μžˆλ‹€.

❓암묡적 μ „μ—­( implicit global )
μ„ μ–Έλ˜μ§€ μ•Šκ³  ν•¨μˆ˜ λ‚΄μ—μ„œ μ‚¬μš©λœ λ³€μˆ˜κ°€ μ•”λ¬΅μ μœΌλ‘œ μ „μ—­ 객체에 ν”„λ‘œνΌν‹°λ₯Ό 동적 μƒμ„±ν•˜λŠ” 경우λ₯Ό 암묡적 전역이라고 ν•œλ‹€. 개발자의 μ˜λ„μ™€λŠ” 상관없이 λ°œμƒν•œ 암묡적 전역은 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€λŠ” 원인이 될 κ°€λŠ₯성이 ν¬λ―€λ‘œ, λ°˜λ“œμ‹œ let, const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ λ‹€μŒ μ‚¬μš©ν•˜λ„λ‘ ν•œλ‹€.

βœ”οΈ strict mode ?

  • ν•¨μˆ˜ λͺΈμ²΄μ˜ 선두에 use strict;λ₯Ό μΆ”κ°€ν•˜λ©΄ ν•΄λ‹Ή ν•¨μˆ˜μ™€ 쀑첩 ν•¨μˆ˜μ— μ μš©λœλ‹€.
  • μ „μ—­μ˜ 선두에 use strict;λ₯Ό μΆ”κ°€ν•˜λ©΄ ν•΄λ‹Ή 슀크립트 전체에 μ μš©λœλ‹€.
// β€˜use strict’; μ „μ—­μ˜ 선두에 μΆ”κ°€ν•  경우

const number = () => {
// β€˜use strict’; ν•¨μˆ˜ λͺΈμ²΄μ˜ 선두에 μΆ”κ°€ν•  경우
x = 100;
}
number();

βœ”οΈ strict modeκ°€ λ°œμƒμ‹œν‚€λŠ” μ—λŸ¬

  • 암묡적 μ „μ—­: μ„ μ–Έν•˜μ§€ μ•Šμ€ λ³€μˆ˜ μ°Έμ‘° μ‹œ ReferenceErrorλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
  • λ³€μˆ˜, ν•¨μˆ˜, λ§€κ°œλ³€μˆ˜μ˜ μ‚­μ œ: delete μ—°μ‚°μžλ‘œ λ³€μˆ˜, ν•¨μˆ˜, λ§€κ°œλ³€μˆ˜λ₯Ό μ‚­μ œ μ‹œ SyntaxErrorλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
  • λ§€κ°œλ³€μˆ˜ μ΄λ¦„μ˜ 쀑볡: μ€‘λ³΅λœ λ§€κ°œλ³€μˆ˜ 이름 μ‚¬μš© μ‹œ SyntaxErrorλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
  • with 문의 μ‚¬μš©: SyntaxErrorλ₯Ό λ°œμƒμ‹œν‚¨λ‹€.

βœ”οΈ strict mode μ μš©μ— μ˜ν•œ λ³€ν™”

  • 일반 ν•¨μˆ˜μ˜ this: ν•¨μˆ˜λ₯Ό 일반 ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•˜λ©΄ this에 undefinedκ°€ 바인딩 λœλ‹€.
  • arguments 객체: λ§€κ°œλ³€μˆ˜μ— μ „λ‹¬λœ 인수λ₯Ό μž¬ν• λ‹Ήν•΄λ„ `arguments 객체에 λ°˜μ˜λ˜μ§€ μ•ŠλŠ”λ‹€.

0개의 λŒ“κΈ€