본문 바로가기
언어

The modern mode, "use strict" (JavaScript)

by adawn 2025. 3. 10.

출처 : 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