<JS>strict mode

gunho1998·2022년 6월 23일
0

자바스크립트

목록 보기
22/25
post-thumbnail

strict mode란 ?

다음 예제 실행 결과를 예측해보자

function foo() {
x = 10;
}
foo();
consoloe.log(x); // ?

함수 내부에서 선언하지 않은 x 변수에 값 10을 할당했다.

전역 스코프에서도 x 변수의 선언이 존재하지 않기 때문에 ReferenceError를

발생시킬 것 같지만 자바스크립트는 암묵적으로 전역객체에 x 프로퍼티를 동적 생성한다.

x의 결과는 10이 나오게 된다.

개발자의 의도와는 상관없이 발생한 암묵적 전역은

오류를 발생시키는 원인이 될 가능성이 크다.

따라서 반드시 let, const 키워드를 사용하여 변수를 선언한 다음에 사용해야 한다.

strict mode는 쉽게 말해 자바스크립트 언어의 문법을 좀 더 엄격하게 적용해서
오류를 줄이고 안정적인 생산을 하기 위한 근본적인 해결책이다.

strict mode 의 적용

strict mode를 적용하려면 전역의 선두 또는 함수 몸체의 선두에

'use strict'; 를 추가한다.

전역의 선두에 추가하면 스크립트 전체에 strict mode가 적용된다.

함수 몸체의 선두에 추가하면 해당 함수와 중첩 함수에 strict mode가 적용된다.
코드의 선두에 'use strict'; 를 위치시키지 않으면 strict mode가 제대로 동작하지 않는다.

전역에 strict mode를 적용하는 것은 피하자

외부 서드파티 라이브러리를 사용하는 경우 라이브 러리가 non-strict mode인 경우도

있기 때문에 전역에서 strict mode를 적용하는것은 바람직하지 않다.

strict mode가 발생시키는 에러

선언하지 않은 변수를 참조하면 ReferenceError가 발생한다.

(function () {
'use strict';
x = 1;
console.log(x); // ReferenceError: x is not difiend
}();

중복된 매개변수 이름을 사용하면 SyntaxError가 발생한다.

(function () {
'use strict';
// SyntaxError: Duplicate parameter name not allowed in this context
function foo(x,x) {
return x + x;
}
console.log(foo(1,2));
}());

profile
어제보다 0.01% 발전하는 사람

0개의 댓글