Book/모던 자바스크립트 Deep Dive
20장, _ strict mode
떼굴펜
2024. 5. 28. 14:58
오류 발생 가능성을 높이거나 최적화 문제를 일으킬 수 있는 코드에 대해 명시적 에러를 발생시킴으로서,
자바스크립트 문법을 좀더 엄격히 적용한 것이다.
유사한 역할로서 린트들을 사용하는데, 린트 도구는 제한 오류부터 코딩 컨벤션까지 설정 파일 형태로 정의할 수 있기에 조금 더 강력하다.
stric mode 적용하기
전역의 혹은 함수 몸체의 선두에 'use strict';를 추가한다.
'use strict';
function foo() {
x= 10; //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();
strict mode 적용 시, 뭐가 다른가요?
Reference Error
: 선언하지 않은 변수를 참조할 경우
function foo() {
x= 10; //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();
Syntax Error
1) delete 변수로 변수, 함수, 매개변수를 삭제 시
function foo() {
var x= 10;
delete x; // Syntax Error
}
foo();
2) 중복된 매개변수 이름 사용할 시
function foo() {
x= 10; // Syntax Error
}
foo();
3) with 문 사용 시
(function () {
with({x:1}) { // Syntax Error
console.log(x);
}
}());
일반함수의 this에 undefined가 binding 된다.
function foo() {
x= 10; //ReferenceError : x is not diefined (stric mode가 아니면 에러가 나지 않음)
}
foo();
인수를 재할당해도 arguments 객체에 반영되지 않는다.
(function (value) { // value 에는 "안녕"이 들어가있다.
value = 2; // value =2 로 재할당
console.log(arguments); // { 0: "안녕", length:1 }
}());