English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ECMAScript 5導入されたJavaScriptの厳格モードは選択参加 JavaScriptの制限されたバリエーションの一つです。
厳格モードは単なるサブセットではなく、意図的に通常のコードとは異なる意味を持たせられています。
厳格モードでは「安全」なJavaScriptの記述がより簡単になります。
厳格モードでは、以前受け入れられていた「誤り文法」を実際のエラーに変更します。
厳格モードでは、例えば、宣言されていない変数を使用することはできません。
厳格モードは、"use strict";をスクリプトや関数の先頭に追加することで宣言されます。
スクリプト全体に厳格モードを適用するには、他のすべての宣言の前に「use strict」を入力します:
"use strict"; str="嗨,我是严格模式脚本!"; // 未宣言のstrを使用しているため、エラーが発生しますテストをしてみて‹/›
関数に厳格モードを適用するには、"use strict";を関数の本体に配置し、他のすべての文の前に配置します:
function myFunc() { // 関数レベルの厳格モード構文 "use strict"; str="大家好,我是严格模式函数!"; // これはエラーが発生します return str; }テストをしてみて‹/›
厳格モードは、未宣言の変数の使用を防ぐなどの方法で、より簡潔なコードの作成を助けます。
この"use strict"指令は、スクリプトや関数の先頭で認識されます。
シングルクォートとダブルクォートの構文はどちらも受け入れられます('use strict';または"use strict";)。
ご存知の通り、厳格モードではすべての変数を宣言する必要があります。
宣言されていない識別子に値を割り当てると、ReferenceErrorが発生します:
"use strict"; x= 5; // ReferenceError: x は定義されていませんテストをしてみて‹/›
未宣言のオブジェクトを使用することは許可されていません(オブジェクトも変数です):
"use strict"; coord={x:10,y:20}); // ReferenceError: coord は定義されていませんテストをしてみて‹/›
厳格モードで変数を削除しようとすると、構文エラーが発生します:
"use strict"; var msg="Hello World"; delete msg;// SyntaxErrorテストをしてみて‹/›
同様に、厳格モードで関数を削除しようとすると、構文エラーが発生します:
"use strict"; function sum(a,b) { return a + b; } delete sum;// SyntaxErrorテストをしてみて‹/›
厳格モードでは、重複する引数名を使用することは許可されていません:
"use strict"; function square(a,a) { // SyntaxError return a * a; }テストをしてみて‹/›
厳格モードでは、読み取り専用の属性に書き込みを許可されていません:
"use strict"; var person={name:"Akash",age: 22}; Object.defineProperty(person,"gender",{value:"male",writable:false}); person.gender="female"; // TypeErrorテストをしてみて‹/›
厳格モードでは、with文を使用することは許可されていません:
"use strict"; with(Math){x=sqrt(25); // SyntaxErrorテストをしてみて‹/›
厳格モードでは、八進数を使用することは許可されていません:
"use strict"; var x = 010; // SyntaxErrorテストをしてみて‹/›
セキュリティの理由から、eval()その呼び出し範囲内で変数を作成することは許可されていません:
"use strict"; eval("var x = \ 10; console.log(x); // ReferenceError: x 変数が定義されていませんテストをしてみて‹/›
文字列「eval」は識別子(変数名)として使用できません:
"use strict"; var eval = "oldtoolbag.com";// SyntaxErrorテストをしてみて‹/›
文字列「arguments」は識別子(変数名)として使用できません:
"use strict"; var arguments = "oldtoolbag.com";// SyntaxErrorテストをしてみて‹/›
今後のECMAScriptバージョンでは新しい構文が導入される可能性があります、ES5の厳格モードでは、移行を簡素化するための制限を適用します。
これらの変更を禁止する基本が厳格モードであれば、いくつかの変更を行うのが容易です。
厳格モードでは、以下の識別子リストが予約語になります:
implements
interface
let
package
private
protected
public
static
yield
"use strict"; var package = true; // これはエラーを引き起こしますテストをしてみて‹/›