ECMAscript 5는 일반 실행 모드 외에도 두 번째 실행 모드인 "엄격 모드"를 추가합니다. 이름에서 알 수 있듯이 이 모드는 Javascript가 더 엄격한 조건에서 실행되도록 합니다.
Javascript 구문의 불합리하고 느슨한 측면을 제거하고 이상한 동작을 줄입니다.
코드 실행의 안전하지 않은 측면을 제거하고 코드 실행의 안전성을 보장합니다.
컴파일러 개선 효율성을 높이고 실행 속도를 높이세요.
향후 새로운 버전의 Javascript를 위한 길을 열어주세요.
"엄격 모드"는 Javascript의 보다 합리적이고 안전하며 보다 엄격한 개발 방향을 반영합니다. IE 10을 포함한 주류 브라우저는 이미 이를 지원하고 있으며 많은 대규모 프로젝트에서 이를 완전히 수용하기 시작했습니다.
반면에 "엄격 모드"에서는 동일한 코드의 실행 결과가 다를 수 있습니다. "일반 모드"에서 실행될 수 있는 일부 명령문은 "엄격 모드"에서 실행되지 않습니다. 이러한 내용을 마스터하면 Javascript를 더 자세히 이해하고 더 나은 프로그래머가 될 수 있습니다.
"use strict";
<script> "use strict"; console.log("这是严格模式。"); </script>
function strict(){ "use strict"; return "这是严格模式。"; } function notStrict() { return "这是正常模式。"; }
Strict 모드에서는 Javascript의 구문과 동작이 일부 변경되었습니다.
일반 모드에서 변수에 선언하지 않고 값을 할당하면 기본값이 전역 변수가 됩니다. 엄격 모드에서는 이러한 사용이 금지되며 전역 변수는 명시적으로 선언되어야 합니다.
"use strict"; v = 1; // 报错,v未声明 for(i = 0; i < 2; i++) { // 报错,i未声明 }
따라서 strict 모드에서는 변수를 사용하기 전에 var 명령으로 선언해야 합니다.
function f(){ return !this; } // 返回false,因为"this"指向全局对象,"!this"就是false function f(){ "use strict"; return !this; } // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
따라서 생성자를 사용할 때 new를 추가하는 것을 잊어버리면 this는 더 이상 전역 객체를 가리키지 않지만 오류가 보고됩니다.
function f(){ "use strict"; this.a = 1; }; f();// 报错,this未定义
Strict 모드에서는 변수를 삭제할 수 없습니다. 구성 가능 항목이 true로 설정된 개체 속성만 삭제할 수 있습니다.
"use strict"; var x; delete x; // 语法错误 var o = Object.create(null, {'x': { value: 1, configurable: true }}); delete o.x; // 删除成功
일반 모드에서 객체에 중복된 이름이 있는 여러 속성이 있는 경우 마지막으로 할당된 속성이 이전 값을 덮어씁니다. 엄격 모드에서는 구문 오류입니다.
"use strict"; var o = { p: 1, p: 2 }; // 语法错误
일반 모드에서 함수에 동일한 이름의 매개변수가 여러 개 있는 경우 인수[i]를 사용하여 읽을 수 있습니다. 엄격 모드에서는 구문 오류입니다.
"use strict"; function f(a, a, b) { // 语法错误 return ; }
관련 추천:
JavaScript 엄격 모드_javascript 기술에 대한 자세한 설명
위 내용은 JavaScript의 '엄격한 사용' 엄격 모드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!