ホームページ > 記事 > ウェブフロントエンド > JavaScriptのstrictモード「use strict」の詳細説明
通常の実行モードに加えて、ECMAscript 5 では 2 番目の実行モード「strict モード」が追加されています。名前が示すように、このモードでは Javascript がより厳しい条件で実行されます。
Javascript 構文の不合理で緩い側面を削除し、奇妙な動作を削減します。
コード実行の安全でない側面を削除し、コード実行の安全性を確保します。
コンパイラを改善します。効率性と実行速度の向上
将来の Javascript の新しいバージョンへの道を開きます。
「Strict Mode」は、JavaScript のより合理的で安全かつ厳格な開発方向を反映しており、IE 10 を含む主流ブラウザはすでにそれをサポートしており、多くの大規模プロジェクトがそれを完全に採用し始めています。
一方、同じコードでも「厳密モード」では実行結果が異なる場合があります。「通常モード」で実行できる一部のステートメントは「厳密モード」では実行されません。これらの内容をマスターすると、JavaScript をより詳しく理解し、より優れたプログラマーになれるでしょう。
"use strict";
<script> "use strict"; console.log("这是严格模式。"); </script>
function strict(){ "use strict"; return "这是严格模式。"; } function notStrict() { return "这是正常模式。"; }
厳密モードでは、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未定义
厳密モードでは変数を削除できません。構成可能項目が 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 }; // 语法错误
通常モードでは、関数に同じ名前のパラメータが複数ある場合、arguments[i]を使用してそれらを読み取ることができます。厳密モードでは、これは構文エラーです。
"use strict"; function f(a, a, b) { // 语法错误 return ; }
関連する推奨事項:
JavaScript strict モードの詳細な説明_javascript スキル
以上がJavaScriptのstrictモード「use strict」の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。