https://youtu.be/V73Nvyd5gK0?si=gZgEAfJCBMfiGc_V
JS엔진은 선언되지 않은 변수를 호출할경우, 암묵적으로 전역 객체 x에 해당 변수를 프로퍼티로 동적 생성한다. 이를 암묵적 전역이라고 하는데, 오류를 발생시킬 원인이 될 가능성이 매우 크다.
💡 전역 객체의 프로퍼티와, 전역 변수는 다르다!
function foo() {
x = 10;
}
foo();
console.log(x);
위에선 선언되지 않은 x변수가 전역으로 등록되어 호출된다.
하지만 엄격모드를 전역에 적용하면 이를 걸러준다.
"use strict";
function foo() {
x = 10;
}
foo();
console.log(x);
따라서 변수는 반드시 let, const
키워드로 선언한 후 사용해야 한다.
전역에 적용하려면 전역의 선두에 ‘use strict’를 적는다. 함수에 적용하려면 함수 바디 선두에 ‘use strict’를 적는다.
엄격모드와 비엄격모드를 혼용하는것은 오류를 발생시키기 좋다.