<aside> 💡 학습주제 strict mode 알아보기

</aside>

  1. strict mode란?
  2. strict mode 적용하기
  3. strict mode가 발생시키는 에러
  4. strict mode 적용에 의한 변화

1. strict mode란?

정의


자바스크립트 문법을 엄격히 적용해서 오류를 발생시킬 가능성이 높은 코드에 대해 
명시적인 에러를 발생시킬 수 있는 것 

적용 전 후 차이


아래 예제에서 자바스크립트 엔진이 변수 x 를 찾는 과정

  1. 테스트 함수 내부에서 x 변수가 선언된적 있는지 검사한다. ⇒ let, var, const 키워드를 사용해서 선언하지 않았기 때문에 검사에 실패.

  2. 테스트 함수의 상위 스코프 ( 여기서는 전역 스코프) 에서 x 변수가 선언된적 있는지 검사한다. ⇒ 전역에서도 x 변수의 선언이 없기때문에 검사에 실패

적용 전


function 테스트(){
	x = 10;
}

테스트();

console.log(x) // 10 출력

검사에 실패했기 때문에 Reference에러를 발생시킬 것 같지만 암묵적으로 전역객체에 x 프로퍼티를 만들게 된다.

따라서 전역객체의 x 프로퍼티는 전역변수처럼 사용할 수 있게 되는데 이러한 현상을 암묵적 전역 ( implicit global ) 이라고 한다.

console.dir(window)
console.log(window.x) // 10 출력

window객체 내부에 x가 10으로 적용되어 있는것을 확인할 수 있다.

window객체 내부에 x가 10으로 적용되어 있는것을 확인할 수 있다.

적용 후

'use strict'

function 테스트(){
	x = 10;
}

테스트();

console.log(x) // Uncaught ReferenceError: x is not defined at line 4 col 5

strict mode를 'use strict'를 위와 같이 전역의 가장 상위에 적용시켜주면 이제 암묵적 전역이 발생되지 않고, 에러가 발생한다.

ESLint