JavaScript의 엄격 모드

4032 단어 webdevjavascript
JavaScript는 원래 본격적인 프로그래밍 언어로 만들어지지 않았습니다. 원래 목적은 웹 페이지에 상호작용을 추가하는 것이었습니다. 매우 유연한 언어로 만들어졌기 때문에 프로그래밍을 처음 접하는 사람들도 쉽게 사용할 수 있습니다.

그러나 이 언어는 보다 복잡한 맥락에서 사용되기 시작했고 "부주의함"이 문제가 되기 시작했습니다. 복잡한 소프트웨어는 유지 관리가 더 쉽기 때문에 언어를 더 제한해야 합니다.

이러한 이유로 언어에 새로운 모드가 도입되었는데 이것이 엄격 모드입니다.

엄격 모드에 액세스하는 방법



엄격 모드를 활성화하는 한 가지 방법은 JavaScript 파일의 첫 번째 줄에 문자열"use strict";을 넣는 것입니다.

또 다른 방법은 기본 JavaScript 모듈을 사용하는 것입니다. Node.js를 사용하는 경우 모듈은 파일 확장명이 .js가 아닌 .mjs인 JS 파일입니다. 브라우저에서 속성type="module"<script> 태그에 추가해야 합니다.

클래스 내부의 코드도 항상 엄격 모드에 있습니다.

엄격 모드에서 변경되는 사항



이전 모드(종종 "sloppy 모드"라고 하지만 공식 이름은 아님)에서 const , let 또는 var 로 선언하지 않고 변수를 만들 수 있습니다.

name = "Stephanie";
console.log(`Her name is ${name}`);


이전 sloppy 모드에서는 첫 번째 줄이 정확하며 name 라는 새 변수를 만듭니다. 그러나 엄격 모드에서는 오류가 발생합니다.

선언하지 않고 변수를 생성할 때의 문제점은 기존 변수를 재할당했는데 오타를 추가하면 나도 모르게 새로운 변수를 생성하게 된다는 점입니다.

sloppy 모드에서 많은 오류가 깔개 아래로 휩쓸렸습니다. 작동하지 않았지만 코드는 아무 일도 없었던 것처럼 계속 실행되었습니다. 예를 들어:

var undefined = true;
var NaN = 25;
delete Object.prototype;


위의 예에서 언어의 내장 객체와 키워드를 만지작거리고 있습니다. 변경하거나 삭제할 수 없지만 sloppy 모드에서는 이러한 변경 사항이 무시됩니다. 엄격 모드에서 이 코드를 실행하면 오류가 발생합니다.

또 다른 큰 차이점은 the this keyboard에서 발생합니다. 객체의 메서드가 아닌 함수를 호출할 때 엄격 모드에서 this 값은 undefined 입니다. "조잡한 모드"에서 this의 값은 전역 개체였습니다(즉, 브라우저에서 window 개체).

"use strict";
function logThis() {
    console.log(this);
}
logThis(); // Outputs undefined



// sloppy mode
function logThis() {
    console.log(this);
}
logThis(); // Outputs [object Window]


사용 시기



요즘에는 항상 엄격 모드를 사용하는 것이 좋습니다. 유일한 주의 사항은 사용하지 않는 이전 코드를 처리하는 경우 가능한 모든 오류를 수정할 때까지 반드시 엄격 모드로 전환해서는 안 된다는 것입니다.


이 기사가 마음에 드셨다면 제 JavaScript 뉴스레터도 마음에 드실 것입니다.
격주 월요일마다 JavaScript 기술 수준을 높일 수 있는 쉽고 실행 가능한 단계를 보내드립니다. 확인해보세요: https://nicozerpa.com/newsletter

좋은 웹페이지 즐겨찾기