🦎 JavaScript

[JS] 특수모드(엄격모드)

하나둘세현 2023. 2. 5. 19:02
728x90

 

JS에서 특수 모드(special mode)를 활성화해야한다. 특수 모드(special mode) = 엄격모드(strict mode)

JS에서 활성화할 수 있고 보안 JS 코드를 더 쉽게 만들 수 있다. 

엄격 모드를 활성화하기 위해 해야할 일은 스크립트 시작 부분에 'use strict'를 작성하는 것이다.

"use strict";

엄격하게 사용하면 된다. 그래서 전체 스크립트에 대해 엄격모드를 활성화했다.

이 문장은 기본적으로 스크립트의 첫 번째 문장이어야 한다. 따라서 이 전 코드가 있으면 엄격 모드는 활성화되지 않는다. 

comments는 허용된다. 왜냐하면 JS는 코드 없이 무시한다. 

활성화된 엄격 모드는 특정 기능 또는 특정 블록에만 해당한다. 

스크립트 시작부분에 엄격모드를 작성하면 더 안전한 코드를 작성하게 된다. 개발자가 더 쉽게 우발적인 오류를 방지하여 안전하다. 그것은 엄격 모드를 의미한다. 즉, 기본적으로 버그를 코드에 도입하는데 도움된다. 그 이유는 

1. 엄격모드는 특정 작업을 금지한다.

2. 엄격 모드가 없는 특정 상황에서 실제로 눈에 보이는 오류를 생성한다.JS는 내가 실수 했다는 것을 알리지 않고 자동으로 실패한다. 

 

엄격 모드가 없으면?

let hasDriverslicense = false;
const passTest = true;

if (passTest) hasDriverlicense = true;
if (hasDriverslicense) console.log("I can drive");

if (passTest) hasDriverlicense에서 s를 빼고 작성해봤다. 큰솔 값을 뜨면 아무런 에러 메시지가 안뜬다. "JS는 내가 실수 했다는 것을 알리지 않고 자동으로 실패한다. " ← 딱 이상태이다.

 

엄격 모드가 있으면?

"use strict";

let hasDriverslicense = false;
const passTest = true;

if (passTest) hasDriverlicense = true;
if (hasDriverslicense) console.log("I can drive");

hasDriversLicense가 정의되지 않았다고 메시지가 뜬다. 즉, 오류 메시지가 뭐가 나타나 뭐가 잘못되었는지 알려준다. 

엄격모드 덕분에 버그를 피할 수 있었다. 

interface

엄격모드가 하는 또 다른 일은 나중에 추가될 수 있는 기능을 위해 저장된 변수 이름의 짧은 목록을 소개하는 거다.

const interface = "Audio";

"Unexpected strict mode reserved word"라고 에러 메시지가 떴다. interface 단어를 보류하는 이유는 나중에 구현할 기능을 위해서 이다. 이런 단어를 아껴두면 나중에 기능을 구현하기가 더 쉬워진다. 

private

const private = 543;

private 변수에 숫자를 저장해놓은 것도 작동이 안된다. 왜냐하면 나중에 private 필드랑 클래스라는 것이 있을 수 있기 때문이다. 또 다른 언어에서도 private 이 단어를 사용하고 싶을 수도 있기 때문이다. 엄격한 모드는 이 단어들을 보류하기 때문에 변수에 사용할 수 없다. 

이것과 같은 논리라면 변수 if도 사용할 수 없다. 왜? if문은 이미 있기 때문이다. 

728x90