javascript strict mode 정리

By | 2014/03/04

javascript strict mode

strict모드를 jslint를 사용하게 되면서 사용하고 있는데, 이게 뭔지 모르는 채로 그냥 사용하는 것은 뭔가 찜찜했기에,찾아서 정리함.

strict모드는 파일, 프로그램 또는 함수의 시작 부분에 "use strict";를 추가하여 strict모드를 추가 할 수 있다.

strict모드의 제한

  • Strict모드에서 변수를 선언하지않고 사용할 수 없다.
  • 읽기 전용 속성에 값을 할당할 수 없다.
  • extensible특성이 false로 설정된 객체에 속성을 추가할 수 없다.
  • configurable특성이 false로 설정된 속성을 삭제할 수 없다.
  • 객체에 같은 이름의 속성을 두번이상 정의 하지 못한다.
  • 함수에서 파라메터명에 같은 이름을 두번 이상 사용하지 못한다.
  • implements, interface, package, private, protected, public, static, yield 등과 같은 예약어를 변수 또는 함수 이름으로 사용 할 수 없다.
  • 숫자 리터럴에 8진수 값을 할당하거나 8진수 값에 이스케이프를 사용할 수 없다.
  • this의 값이 null또는 undefined인 경우 전역 객체로 바뀌지 않음.
  • 문자열 “eval”, “arguments” 식별자(함수, 변수, 매개변수 명)으로 사용 할 수 없다.
  • 함수선언을 statement나 함수 블록내에서 중첩해서 할 수 없다.
  • 변수가 eval함수내에서 선언 되는 경우 해당 함수 밖에서 사용할 수 없다.
  • 로컬 arguments 객체의 값을 변경할 수 없다.
  • arguments.callee를 허용하지 않음
  • with문을 허용하지 않음