-
"use strict"JQuery/JQuery UI 2022. 4. 1. 11:43
(function ($, window, document){ "use strict"; <!-- 코드 맨 앞에 문자열 리터럴 형태로 하나의 행을 쓴다. --> ... ... })(jQuery, window, window.document);Strict Mode?
함수 호출에서 제공한대로 값이 정확하게 사용됨을 의미- 특징
- 디버깅이 쉬워진다.
javascript오류는 아니지만 함정이 될 어떤 일을 오류가 발생하도록 변경하여 제거한다.
=> 코드의 문제를 더 빨리 알리고 소스로 더 빨리 안내한다. - 빠르게 수행할 수 있다.
javascript엔진의 최적화 처리를 어렵게 만드는 오류를 수정한다. - 발생가능한 에러를 예방한다.
미래의 ECMAScript로 정의될 예정 구문을 금지한다. - 전역 스코프에 명시
=> 스크립트 전체가 strict 모드로 실행 - 함수 안에서 "use strict" 사용
=> 해당 함수만 strict 모드로 실행 - "use strict"모드의 시작행 이전 부분은 해당되지 않는다.
- 단순히 { }를 생성한 임의의 블록 구문에는 적용할 수 없다.
- 대표적인 블록 스코프에서 또한 아무 일도 일어나지 않는다.
- 디버깅이 쉬워진다.
// 6 x = 3.14; "use strict"; // 7 { 'use strict'; x = 3.14; } // 3.14 // 8 for(i = 0; i < 1; i++ { 'use strict'; x = 3.14; } // 3.14- 주요 이점
- 우발적인 global을 방지한다.
=> strict모드가 없으면 선언되지 않은 변수에 값을 할당 시 해당 이름의 전역 변수가 자동으로 생성된다. (JS에서 가장 일반적인 오류 중 하나)
=> strict 모드에서는 오류 발생 - this coercion을 제거한다.
=> strict모드가 없으면 this의 null또는 undefined값에 대한 참조가 자동으로 전역에 강제된다. (버그 발생)
=> strict 모드에서 this를 null 또는 undefined값으로 참조하면 오류가 발생한다. - 중복 매개변수 값을 허용하지 않는다.
=> strict모드는 함수에 대해 이름이 지정된 중복 인수를 감지하면 오류를 발생시킨다.
- 우발적인 global을 방지한다.
function foo (val1, val2, val1) { }; // undefined 'use strict' function foo (val1, val2, val1) { }; // Uncaught SyntaxError: Duplicate parameter name not allowed in this context[ 참고 ]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Strict_mode
Strict mode - JavaScript | MDN
엄격 모드는 평범한 JavaScript 시멘틱스에 몇가지 변경이 일어나게 합니다.
developer.mozilla.org
- 특징