https://youtu.be/V73Nvyd5gK0?si=gZgEAfJCBMfiGc_V

20장 strict mode

암묵적 전역

JS엔진은 선언되지 않은 변수를 호출할경우, 암묵적으로 전역 객체 x에 해당 변수를 프로퍼티로 동적 생성한다. 이를 암묵적 전역이라고 하는데, 오류를 발생시킬 원인이 될 가능성이 매우 크다.

💡 전역 객체의 프로퍼티와, 전역 변수는 다르다!

function foo() {
    x = 10;
}
foo();

console.log(x);

위에선 선언되지 않은 x변수가 전역으로 등록되어 호출된다.

Untitled

하지만 엄격모드를 전역에 적용하면 이를 걸러준다.

"use strict";
function foo() {
    x = 10;
}
foo();

console.log(x);

Untitled

따라서 변수는 반드시 let, const키워드로 선언한 후 사용해야 한다.

strict mode의 적용

전역에 적용하려면 전역의 선두에 ‘use strict’를 적는다. 함수에 적용하려면 함수 바디 선두에 ‘use strict’를 적는다.

전역에는 strict mode를 사용하지 말자.

엄격모드와 비엄격모드를 혼용하는것은 오류를 발생시키기 좋다.