자바스크립트 - 엄격 모드

안녕하세요, 미래의 자바스크립트 마법사 여러분! 오늘은 초반에는 조금 무서울 수 있지만, 포장지 아래에서 추가의 프렌치 푸드를 발견하는 것처럼 재미있을话题을 다루게 될 것입니다. 우리는 자바스크립트의 엄격 모드에 대해 이야기할 것입니다!

JavaScript - Strict Mode

자바스크립트의 엄격 모드

운전을 배우는 것을 상상해 보세요. 처음에는 지도사가 너그러워서 작은 실수들을 방치할 수 있습니다. 하지만 당신이 진행될수록, 그들은 더 엄격해지고 작은 실수도 지적합니다. 자바스크립트의 엄격 모드도 exactamente 그렇습니다 - 코드에 대한 엄격한 지도사입니다!

엄격 모드는 ECMAScript 5(ES5)에서 도입된 기능으로, 프로그램이나 함수를 "엄격"한 운영 环境에 두도록 합니다. 이 엄격한 环境는 특정 작업을 방지하고 더 많은 예외를 발생시킵니다.

엄격 모드 활성화

엄격 모드를 활성화하는 것은 쉬워요 ( pie를 좋아하지 않는 사람이 어디 있을까요?). 단지 스크립트나 함수의 시작 부분에 "use strict" 문자열을 추가하시면 됩니다. 어떻게 보이는지 보겠습니다:

"use strict";

// 여러분의 코드 여기에

이렇게 하면 전체 스크립트에 대해 엄격 모드를 활성화했습니다. 하지만 기억하세요, 안전 벨트를 차는 것처럼 - 시작할 때 해야만 효과가 있습니다!

엄격 모드 사용 이유

이제 여러분은 "왜 자바스크립트를 더 엄격하게 만들어야 할까? 이미 충분히 복잡하지 않나요?"라고 고민할 수도 있습니다. 그러나 어린 padawan, 엄격 모드는 실제로 도와주기 위해 있습니다. 다음은 엄격 모드를 사용할 수 있는 이유입니다:

  1. 일반적인 코딩 실수를 잡아내어 예외를 발생시킵니다.
  2. 상대적으로 "안전하지 않은" 작업을 수행할 때 예외를 발생시키거나 방지합니다.
  3. 혼란스럽거나 잘 구상되지 않은 기능을 비활성화합니다.
  4. 코드를 더 안전하게 만듭니다.
  5. "cleaner"한 코드를 작성하는 데 도움이 됩니다.

간단한 예제를 보겠습니다:

"use strict";

x = 3.14; // 이 작업은 오류를 발생시킵니다

엄격 모드가 없다면, 자바스크립트는 기꺼이 전역 변수 x를 생성합니다. 하지만 엄격 모드에서는 변수를 let, const, 또는 var로 선언하지 않아서 오류를 발생시킵니다. 친구가 항상 신발 끈을 매는 것을 상기시켜주는 것과 같습니다!

전역 범위에서의 엄격 모드

전역 범위(함수 외부)에서 엄격 모드를 사용하면 전체 스크립트에 적용됩니다. 다음은 예제입니다:

"use strict";

function doSomething() {
x = 10; // 이 작업은 오류를 발생시킵니다
}

doSomething();

이 경우, x = 10이 함수 내에 있지만, 전체 스크립트에 대해 엄격 모드가 활성화되어 있기 때문에 오류가 발생합니다.

지역 범위에서의 엄격 모드

특정 함수 내에서도 엄격 모드를 사용할 수 있습니다. 이는 대형 프로젝트에서 특정 부분에만 엄격 모드를 적용하고 싶을 때 유용합니다. 다음은 그 방법입니다:

function strictFunction() {
"use strict";
// 이 함수는 엄격 모드입니다
y = 20; // 이 작업은 오류를 발생시킵니다
}

function nonStrictFunction() {
// 이 함수는 엄격 모드가 아닙니다
z = 30; // 이 작업은 오류를 발생시키지 않습니다
}

strictFunction();
nonStrictFunction();

이 예제에서, strictFunction()은 오류를 발생시키지만, nonStrictFunction()은 그렇지 않습니다. 마치 집의 특정 방에 "신발과 셔츠 없이 입장 불가" 표지를 달아둔 것과 같습니다!

엄격 모드에서 저지르지 말아야 할 실수

이제 엄격 모드가 잡아내는 일반적인 실수에 대해 이야기해 보겠습니다. 이를 엄격 모드의 "하지 말아야 할 것"으로 생각해 보세요:

실수 예제 설명
선언되지 않은 변수 사용 x = 3.14; 변수는 let, const, 또는 var로 선언해야 합니다
변수에 delete 사용 delete x; 변수, 함수, 인자를 삭제할 수 없습니다
중복된 매개변수 이름 사용 function f(a, a, b) {} 중복된 매개변수 이름은 허용되지 않습니다
8진수 문법 사용 var n = 023; 8진수 문법은 허용되지 않습니다
읽기 전용 속성에 쓰기 var obj = {}; Object.defineProperty(obj, "x", { value: 0, writable: false }); obj.x = 3.14; 읽기 전용 속성에 쓰기는 불가능합니다
with 문 사용 with (Math) { x = cos(2); } with 문은 허용되지 않습니다

다음은 이 규칙 중 일부를 보여주는 더 복잡한 예제입니다:

"use strict";

function calculateArea(radius, radius) {
// 중복된 매개변수 이름 - 이 작업은 오류를 발생시킵니다
with (Math) {
// with 문 사용 - 이 작업은 오류를 발생시킵니다
return PI * radius * radius;
}
}

var result = calculateArea(5, 5);
console.log(result);

이 코드는 두 가지 문제가 있습니다: 중복된 매개변수 이름과 with 문 사용. 엄격 모드는 두 가지 모두를 잡아내어 오류를 발생시키며, 더 나은, 유지보수 가능한 코드를 작성하는 데 도움을 줍니다.

결론적으로, 엄격 모드는 코드를 작성할 때 책임감 있고 약간 까다로운 친구처럼 보일 수 있지만, 더 나은 자바스크립트 개발자가 되도록 도와줍니다. 그러므로 엄격 모드를 환영하고 사용하며, 코드 품질을 높이세요!

기억하세요, 프로그래밍의 세계에서 엄격함은 무례함이 아니라 - 명확하고 정확하며 오류가 없는 것을 의미합니다. 그러므로 엄격하게 코드를 작성해 나가세요, 친구들이여!

Credits: Image by storyset