자바스크립트 'use strict' 란?
자바스크립트로 만든 어플리케이션 파일을 하나 받았는데
맨 위에 'use strict'라고 적혀있었다.
전에 엄격하게 문법 체크를 해주는 옵션이라고 들었던 것 같아서
정확히 이놈이 하는 역할이 무엇이가 궁금하여 알아보았다.
Stack Overflow에 좋은 설명이 있길래 가져왔다.
1. 전역변수 비허용(var가 빠진 선언을 잡아내고 변수 이름에 오타를 찾아낸다)
2. Silent failing assignments(조용한 할당 실패)가 에러를 throw 해 줌(NaN = 5; 할당하기)
3. 지울 수 없는 Properties(속성)을 지우려고 할 때 에러를 throw 해 줌(delete Object.prototype)
4. 모든 객체 내의 속성 이름이 고유하는 것을 요구함(var x = {x1: "1", x1: "2"})
5. 함수 매개변수 이름이 고유해야함(function sum (x, x) {...})
6. 8진수 문법을 금지함(var x = 023; 어떤 개발자들이 앞의 0이 숫자 변화에 아무 영향을 주지 않는다고 착각할 수 있기 때문) 참고
7. with 키워드 금지
8.eval
키워드가 새로운 변수를 도입하지 않음
9. 일반 이름 delete 금지(delete x;) 참고
10. 어떤 형태로도 eval과 arguments 라는 이름의 바인딩이나 할당 금지
11. 형식 매개변수(formal parameters)를 이용하여 arguments
객체의 속성에 별칭을 부여하지 않음
12. arguments.callee는 지원되지 않음
Original text
"use strict";
instructs the browser to use the Strict mode, which is a reduced and safer feature set of JavaScript.List of features (non-exhaustive)
- Disallows global variables. (Catches missing
var
declarations and typos in variable names) - Silent failing assignments will throw error in strict mode (assigning
NaN = 5;
) - Attempts to delete undeletable properties will throw (
delete Object.prototype
) - Requires all property names in an object literal to be unique (
var x = {x1: "1", x1: "2"}
) - Function parameter names must be unique (
function sum (x, x) {...}
) - Forbids octal syntax (
var x = 023;
some devs assume wrongly that a preceding zero does nothing to change the number.) - Forbids the
with
keyword eval
in strict mode does not introduce new variables- Forbids deleting plain names (
delete x;
) - Forbids binding or assignment of the names
eval
andarguments
in any form - Strict mode does not alias properties of the
arguments
object with the formal parameters. (i.e. infunction sum (a,b) { return arguments[0] + b;}
This works becausearguments[0]
is bound toa
and so on. ) arguments.callee
is not supported
0 comments