JS strictモードの例の説明

小云云
リリース: 2018-03-01 09:07:52
オリジナル
1337 人が閲覧しました

この記事は主に、JS strict モードでの関連する知識ポイントとコード例をまとめています。興味がある場合は、エディターをフォローして一緒に学習してください。

いわゆる strict モードは、実際にはどの変数にも割り当てられない文字列「use strict」です。

このプロンプトがグローバル スコープで指定された場合、スクリプト全体が strict モードを使用します。関数内でのみ厳密モードをオンにすることもできます

1。厳密モードにはグローバル変数はありません

a="test"

厳密モードではエラーが報告されますが、非厳密モードでは正常です。モード

2. 変数の削除

var には 3 つの宣言状況があります

  • var 宣言されたグローバル変数

  • var 宣言されたローカル変数

  • eval()

    で宣言されたグローバル変数

first と Second この場合、delete では削除できません。

まず、最初のケースで宣言されたグローバル オブジェクトは Windows の属性ですが、この属性は configurable=false になっており、削除できません

2 番目のケースでは、ローカル変数はさらに悪化します。添付されたオブジェクトには誰もアクセスできません。削除方法はわかりません

3 番目の eval() については後で説明します。

本題に戻ります。つまり、非厳密モードでは変数を削除できますが、失敗して false が返されます。

厳密モードで変数を削除すると、エラーが報告されます。

3. オブジェクト

以下の状況では、オブジェクトを操作するとエラーが報告されます

  1. 読み取り専用属性に値を代入するとエラーが報告されます

  2. -configurable 属性はエラーを報告します

  3. 拡張不可能です オブジェクトに属性を追加するときにエラーが報告されます

  4. オブジェクト リテラルを使用する場合、属性名は一意である必要があります。たとえば、


var person={
  name:"1",
  name:"2"
}
ログイン後にコピー

は、非厳密モードではデフォルトで2番目の値になり、厳密モードではエラーが報告されます。

4. 関数

厳密モードでは、関数パラメータ名が一意である必要があります


function(n,n){
  // todo
}
ログイン後にコピー

非厳密モードでは、この関数宣言はエラーを報告せず、2 番目のパラメータのみにアクセスできます。パラメータ名。パラメータには引数を介してアクセスする必要があります。

引数も 2 つのモードで異なります

非厳密モードでは、名前付きパラメーターの値の変更は引数オブジェクトに反映されますが、厳密モードでは 2 つの値は独立しています。

arguments.callee (関数自体を参照) と argument.caller (呼び出し関数を参照) を削除します。

厳密モードでは、関数名に js の予約語を使用できません

** 厳密モードでは、関数はスクリプトのトップレベルと関数内でのみ宣言できます。関数を if ステートメントで宣言すると、構文エラー。 **


if(true){
  function(){
   // 严格模式下报错
}
}
ログイン後にコピー

5.this

非厳密モードで関数 apply()、call() を使用する場合、渡された null または未定義の値はグローバル オブジェクトに変換されます。厳密モードでは、指定された値に関係なく、関数の this は常に指定された値になります。


var a="1";
function test(){
 console.log(this.a)
}
test.call(null) 在非严格模式下会输出1,严格模式下this就指代的就是null,null没有a属性,就会报错。
ログイン後にコピー

関連する推奨事項:

JS と厳密モードの解析順序と範囲の簡単な紹介

厳密モードでの JS の解析

JavaScript 厳密モードでのこれについては、詳細を参照してください問題の説明


以上がJS strictモードの例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート