원글
The modern mode, "use strict"
오랫동안 자바스크립트는 호환성 문제 없이 진화했다.
이전 기능은 변경되지 않으면서 새로운 기능이 언어에 추가 되었다.
이 사실은 기존에 작성한 코드가 절대 깨지지 않는다는 장점이 있었다.
하지만 단점은 자바스크립트의 제작자들이 한 실수나 불완전한 결정은 영원히 그 언어에 남게 된다는 것이다.
2009년 ECMAScript 5(ES5)가 등장하기 전까지는 그랬다.
ES5는 언어에 새로운 기능을 추가했고 기존에 있던 몇 가지 기능들을 수정했다.
이전 코드가 계속 작동되도록 하기 위해 이러한 수정 내용은 기본적으로 해제되어 있다.
"use strict"라는 특별한 지시어로 명시적으로 활성화해야 한다.
"use strict"
지시어는 문자열 형태이다: "use strict" 는 'use strict'.
코드 최상단에 해당 지시어를 작성하면, 코드 전체가 "최신" 방식으로 작동한다.
"use strict";
/// 이 코드는 최신 방식으로 동작한다
...
"use strict"는 함수의 시작 부분에도 작성할 수 있다.
그렇게 하면 해당 함수에게만 strict mode가 적용된다.
하지만 대부분의 경우는 코드 최상단에 작성한다.
⚠️ "use strict"는 최상단에 위치해야 한다
"use strict"가 코드의 최상단에 위치하지 않으면 strict mode가 활성화되지 않을 수 있다.
alert("some code"); // 아래에 있는 "use strict"는 무시된다 - 코드의 최상단에 위치해야 한다 "use strict"; // strict mode가 활성화되지 않는다
"use strict" 위에는 주석만 작성할 수 있다.
⚠️ strict mode를 취소할 방법은 없다
엔진을 이전 동작 방식으로 되돌릴 수 있는 "no strict mode"와 같은 지시어는 없다.
한번 strict mode로 들어가면 뒤돌아 가는 방법은 없다.
브라우저 콘솔
개발자 콘솔을 이용해서 코드를 실행할 때 기본적으로 strict mode를 사용하지 않는다는 점을 유의하자.
strict mode 사용을 통해 동작 방식에 차이가 있을 경우 잘못된 결과를 얻을 수 있다.
그럼 콘솔에서는 어떤 방법으로 strict mode를 사용할 수 있을까?
가장 먼저 use strict를 입력하고 Shift + Enter 키를 눌러서 코드 여러 줄을 입력하면 된다.
'use strict'; <Shift + Enter for a newline>
// ...your code
<Enter to run>
FireFox와 Chrome 같은 대부분의 브라우저에서 동작한다.
오랜된 브라우저와 같이 예상대로 동작하지 않는 브라우저가 있다면, 추하지만 strict mode를 보장하는 방법이 있다.
아래 방식처럼 코드를 감싸는 것이다:
(function() {
'use strict';
// ...your code here...
})()
"use strict"를 사용해야 할까?
뻔한 질문 같겠지만 그렇지 않다.
누군가는 아주 간단하게 "use strict"를 모든 코드파일 최상단에 포함하면 되지 않을까 하고 추천할 수 있다.
하지만 현대의 JavaScript는 자동으로 strict mode를 사용하는 고급 언어 구조인 "클래스"와 "모듈"을 지원한다.
따라서 해당 구조들을 사용할 경우 "use strict" 지시어를 명시적으로 포함할 필요가 없어진다.
'Programming Language > JavaScript' 카테고리의 다른 글
자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 2 (0) | 2021.03.13 |
---|---|
자바스크립트에서 자주 사용하는 고차 함수(forEach, filter, sort, map, reduce) - 1 (0) | 2021.03.12 |
JavaScript란 이름은 어떻게 지어졌을까? (0) | 2021.03.09 |