이는 간략한 정리라서.. 추후 좀더 보강을 해봐야지..
"use strict";
// 엄격모드가 적용된 전역 범위의 JavaScript 코드
// 이곳에서는 엄격모드의 규칙이 적용된다.
function exampleFunction() {
// 엄격모드가 적용되지 않은 함수 내부
// 이곳에서는 엄격모드의 규칙이 적용되지 않는다.
"use strict";
// 엄격모드가 적용된 함수 내부
// 이곳에서는 엄격모드의 규칙이 적용된다.
// 함수 내부의 코드 작성
}
// 엄격모드가 적용되지 않은 전역 범위의 JavaScript 코드
function exampleFunction() {
// 엄격모드가 적용되지 않은 함수 내부
// 이곳에서는 엄격모드의 규칙이 적용되지 않습니다.
"use strict";
// 엄격모드가 적용된 함수 내부
// 이곳에서는 엄격모드의 규칙이 적용됩니다.
// 함수 내부의 코드 작성
}
아래와 같이 const, let, var 를 쓰지 않은 전역변수를 사용하면,
str = "Hello World"
function printStr () {
console.log(str);
}
printStr();
콘솔에 출력되는 것을 확인할 수 있다.
그런데 최상단에 use strict를 쓰고 같은 코드를 쓰면?
'use strict'
str = "Hello World"
function printStr () {
console.log(str);
}
printStr();
에러가 발생한다.
해결을 위해 전역 번수 앞에 let을 붙이자.
'use strict'
let str = "Hello World"
function printStr () {
console.log(str);
}
printStr();
정상적으로 출력된다.
use strict 를 꼭 사용해야 하나요? "당연히 사용해야 하는 거 아니야?"라는 생각이 드시겠지만, 꼭 그렇지만은 않습니다.
모던 자바스크립트는 '클래스’와 '모듈’이라 불리는 진일보한 구조를 제공합니다(클래스와 모듈에 대해선 당연히 뒤에서 학습할 예정입니다). 이 둘을 사용하면 use strict가 자동으로 적용되죠. 따라서 이 둘을 사용하고 있다면 스크립트에 "use strict"를 붙일 필요가 없습니다.
코드를 클래스와 모듈을 사용해 구성한다면 "use strict"를 생략해도 됩니다.
* 출처: https://ko.javascript.info/strict-mode