今回は、JS strictモードの使い方と、JS strictモードを使用する際の注意事項を紹介します。実際のケースを見てみましょう。
いわゆるstrictモードは、実際にはどの変数にも割り当てられない文字列「use strict」です
このプロンプトがグローバル スコープで指定された場合、スクリプト全体が厳密モードになります。関数内でのみ厳密モードをオンにすることもできます
1. 厳密モードにはグローバル変数はありません
a=「テスト」
厳密モードではエラーが報告されますが、非厳密モードでは正常です
2. 変数を削除します
var
には3つの宣言状況があります var
で宣言されたグローバル変数 1 番目と 2 番目のケースは、delete では削除できません。
まず、前者で宣言したグローバルオブジェクトはWindowsの属性ですが、この属性はconfigurable=falseとなっているため削除できません
2 番目のケースでは、ローカル変数の場合は、添付されたオブジェクトが誰であるかさえわかりません
。 3 番目のケース eval() については後で説明します。
話題に戻ります。つまり、非厳密モードでは変数を削除できますが、失敗して false が返されます。
厳密モードで変数を削除すると、エラーが報告されます。
3.オブジェクト
操作オブジェクトは以下の状況でエラーを報告します
読み取り専用プロパティに値を割り当てるとエラーが報告されます
など 非厳密モードでは、2 番目の値がデフォルトで採用され、厳密モードではエラーが報告されます。
4. 機能
厳密モードでは、関数パラメータ名が一意である必要があります
var person={ name:"1", name:"2" }
非厳密モードでは、この関数宣言はエラーを報告しません。パラメーター名を使用してアクセスできるのは 2 番目のパラメーターのみであり、最初のパラメーターは引数を使用してアクセスする必要があります。
引数も 2 つのモードで異なります
非厳密モードでは、名前付きパラメータの値の変更は引数オブジェクトに反映されます。厳密モードでは、2 つの値は独立しています。
Arguments.callee (関数自体を参照) と argument.caller (呼び出し関数を参照) は削除されます。
strict モードでは、関数名に js予約語
を使用できません **厳密モードでは、関数はスクリプトのトップレベルおよび関数内でのみ宣言できます。関数を if ステートメントで宣言すると構文エラーが発生します。 **うわぁ 5.これ
非厳密モードでは、関数 の apply()、call() を使用すると、渡された null または未定義の値がグローバル オブジェクトに変換されます。厳密モードでは、指定された値に関係なく、関数の this は常に指定された値になります。
function(n,n){ // todo }
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
vueのグローバル登録とローカル登録の使用方法の詳細な説明
readline を使用してコンテンツを 1 行ずつ読み書きする方法
以上がJS厳密モードの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。