출처 : https://javascript.info/strict-mode
The modern mode, "use strict"
javascript.info
modern mode "use strict"
오랫동안 JavaScript는 하위 호환성을 유지하면서 발전해 왔음.
새로운 기능이 추가 되었지만 기존 기능은 변경되지 않았음.
이 방식의 장점은 기존 코드가 깨지지 않는다는 점이 있지만 단점으론 JavaScript의 초기 설계에서 실수나 불완전한 결정이 있었다면 그것이 언어에 영원히 남아버린다는 것임.
이러한 상황은 2009년 ECMAScript 5 (ES5)가 등장하면서 바뀌었음.
ES5는 언어에 새로운 기능을 추가했으며 기존 기능 중 일부를 수정했음.
하지만 기존 코드가 계속 동작할 수 있도록 이러한 변경 사항은 기본적으로 비활성화되어 있음.
이를 활성화하려면 특별한 지시어를 사용해야 함.
그것이 "use strict"임.
"use strict"
이 지시어는 문자열처럼 보임. "use strict " 또는 'use strict' 스크립트의 맨 위에 위치하면 전체 스크립트가
"현대적인 방식"으로 동작함.
예제 :
"use strict";
// 이 코드에서는 엄격 모드가 적용됩니다.
...
곧 함수(명령어를 그룹화하는 방법)를 배우게 될텐데 , "use strict"를 함수의 맨 앞에 배치하면 해당 함수에서만 엄격 모드가 적용됨.
하지만 일반적으로는 스크립트 전체에 적용하는 것이 일반적임.
"use strict" 를 반드시 맨 위에 둘 것
스크립트의 맨 위에 "use strict"가 있어야 엄격 모드가 활성화됨.
다음 코드에서는 엄격 모드가 활성화되지 않음.
alert("some code");
// "use strict"가 아래에 있으므로 무시됩니다.
"use strict";
// 엄격 모드가 적용되지 않음
"use strict"위에는 주석만 올 수 있음.
스크립트 내에서 중간에 추가하면 무시됨.
"use strict"는 취소할 수 없음
JavaScript에는 "no use strict" 같은 지시어가 없으며 , 한번 엄격 모드를 활성화하면 다시 해제 할 수 없음.
엄격 모드에 들어가면 되돌릴 방법이 없음.
개발자 콘솔에서의 "use strict"
개발자 콘솔에서 코드를 실행할 때 기본적으로 "use strict " 가 활성화되지 않음.
따라서 엄격 모드가 적용될 때 결과가 달라질 수 있음.
콘솔에서 엄격 모드 적용하는 방법
1.Shift + Enter를 눌러 여러 줄 입력 후 "use strict"를 맨 위에 추가:
'use strict'; <Shift+Enter>
// ...여기에 코드 입력...
<Enter 실행>
제일 위에는 use_strict를 넣어주고 그 아래에 코드를 넣어 실행하는 느낌으로
2. 만약 위 방법이 작동하지 않는 경우 ( 구형 브라우저 등) , 즉 , 확실히 엄격 모드를 적용하려면 즉시 실행 함수 (IIFE)를 사용할 수 있음.
(function() {
'use strict';
// 여기에 코드 입력...
})();
즉시 실행 함수 (IIFE)
정의되자마자 즉시 실행되는 함수를 의미함.
일반적인 함수는 정의한 후 별도로 호출해야 실행되지만 IIFE는 함수를 선언하자마자 자동으로 실행됨.
즉시 실행 함수의 기본 구조
(function() {
// 실행될 코드
})();
또는 화살표 함수 버전 :
(() => {
console.log("즉시 실행 화살표 함수 실행됨!");
})();
"use strict"를 사용해야 할까?
보통 "use strict"를 스크립트의 맨 위에 추가하는 것이 좋다고 함.
하지만 javaScript의 최신 기능인 클래스(class) 및 모듈 ( module)을 사용하면 엄격 모드가 자동으로 활성화됨.
즉 클래스나 모듈을 사용한다면 "use strict'를 따로 추가할 필요가 없음.
'언어' 카테고리의 다른 글
| Data types (JavaScript) (0) | 2025.03.10 |
|---|---|
| Variables (JavaScript) (0) | 2025.03.10 |
| Code structure (JavaScript) (0) | 2025.03.09 |
| Hello, world! ( JavaScript) (0) | 2025.03.09 |
| Developer console (JavaScript) (0) | 2025.03.08 |