Strict mode

robo333·2022년 6월 21일
0
post-thumbnail

strict mode란 무엇일까?

엄격한 기준으로 코드를 검사하고 발생 할 수 있는 오류들을 잡는 모드이다.

strict mode의 적용

strict mode를 적용하려면 전역의 선두 또는 함수 몸체의 선두에 "use strict"; 를 추가한다.

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

"use strict";

function foo(){
  x = 10; //ReferenceError : x is not defined
}
foo()

함수 몸체의 선두에 추가하면 해당 함수와 중첩 함수에 strict mode가 적용된다.

여기서 오류가 나게 된 이유는 변수 선언은 반드시 var,let,const를 사용해야한다.

function foo(){
  x = 10; //에러를 발생시키지 않는다.
 "use strict";
}
foo()

여기선 왜 오류가 나지 않을까?

코드의 선두에 strict mode를 위치시키지 않으면 얘기될수 있는 오류를 잡아내지 못한다.

그렇기 때문에 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다.

이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용할 수 있다.

이런 현상을 암묵적 전역이라고 한다.

strict mode가 발생시키는 에러

암묵적 전역

선언하지 않은 변수를 참조하면 ReferenceError가 발생한다.
(함수안에서의 x=10 이런 변수들을 말한다. var, let ,const키워드 사용을 하지않고 .)

변수,함수,매개변수의 삭제

delete연산자로 변수,함수,매개변수를 삭제하면 SyntaxError가 발생한다.

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

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

이렇듯 strict mode가 발생시키는 에러의 종류에 대해 알아보았다.

조금 더 깔끔하고 안정적인 코드를 작성할 수 있도록 같이 노력해보자.

0개의 댓글