-
[javascript] 36. Strict Mode - 자바스크립트 강좌 JS / CSEWeb/JavaScript 2015. 6. 13. 15:25
JavaScript Use Strict
use strict 선언은 자바스크립트 코드가 'strict mode'로 실행되야 한다는 것을 의미합니다.
1. The "use strict" Directive
strict mode에서는 선언되지 않은 변수를 사용 할 수 없습니다.
자바스크립트 1.8.5 버전에서 새로이 나왔습니다.
2. Declaring Strict Mode
strict mode는 "use strict";를 자바스크립트 파일의 처음이나 함수에 추가함으로써 선언합니다.
자바스크립트 파일의 시작에 선언하면, 전역 범위가 됩니다.
함수안에 선언하면, 지역 범위가 됩니다.
전역 선언:
1234567"use strict";x = 3.14; // This will cause an errormyFunction(); // This will also cause an errorfunction myFunction() {x = 3.14;}cs 지역 선언:
1234567x = 3.14; // This will not cause an error.myFunction(); // This will cause an errorfunction myFunction() {"use strict";x = 3.14;}cs 3. The "use strict"; Syntax
strict mode 선언을 위한 문법은 예전 버전의 자바스크립트와 비교되어 설계되었습니다.
숫자 식 (4 + 5;)이나 문자 식("John Doe";)을 자바스크립트 프로그램에서 컴파일 하는 것은 Side effect를 내지 않습니다.
그냥 존재하지 않는 변수로 간단히 컴파일 되고 사라집니다.
4. Why Strict Mode?
Strict mode는 안전한(secure) 자바스크립트를 작성하기 쉽게 해줍니다.
Strict mode는 이전에 적용되었던 실제 에러들 사이의 안 좋은 문법을 바꿔줍니다.
일반적인 자바스크립트에서, 변수 이름의 오타는 새로운 전역 변수를 생성합니다.
strict mode에서는, 이러한 문제는 에러를 던지고(throw), 전역 변수를 생성하는 우연적인 일을 불가능하게 합니다.
5. Not Allowed in Strict Mode
변수의 선언 없이 변수를 사용하는 것은 허용하지 않습니다.
변수, 함수, 인자를 삭제하는 것은 허용하지 않습니다.
123"use strict";x = 3.14;delete x; // This will cause an errorcs 속성을 한 번 이상 선언 하는 것은 허용하지 않습니다.
12"use strict";var x = {p1:10, p1:20}; // This will cause an errorcs 인자 이름을 중복하는 것은 허용하지 않습니다.
12"use strict";function x(p1, p1) {}; // This will cause an errorcs 8진수와 확장문자(escape character)는 허용하지 않습니다.
읽기 전용 속성을 쓰는 것을 허용하지 않습니다.
이 밖에 여러가지 제약을 strict mode 에서 제공합니다.
'Web > JavaScript' 카테고리의 다른 글
[javascript] 39. 실수(Mistakes) - 자바스크립트 강좌 JS / CSE (0) 2015.06.13 [javascript] 38. 좋은 지침(Bset Practices) - 자바스크립트 강좌 JS / CSE (0) 2015.06.13 [javascript] 37. Style Guide - 자바스크립트 강좌 JS / CSE (0) 2015.06.13 [javascript] 35. 끌어올리기(Hoisting) - 자바스크립트 강좌 JS / CSE (0) 2015.06.13 [javascript] 34. 디버깅(debugging) - 자바스크립트 강좌 JS / CSE (0) 2015.06.13 [javascript] 33. 에러 - try/catch 문(Error - try / catch throw) - 자바스크립트 강좌 JS / CSE (0) 2015.06.13