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문은 이미 있기 때문이다.
'🦎 JavaScript' 카테고리의 다른 글
[JS] 함수 선언(Function Declarations) | 함수 표현식(Function Expression) (0) | 2023.02.08 |
---|---|
[JS] 함수(Functions) (0) | 2023.02.07 |
[JS] JS가 작동하는 방식 (0) | 2023.02.02 |
[JS] 조건(삼항) 연산자 (0) | 2023.02.02 |
[JS] switch 문 (0) | 2023.02.01 |