ホームページ > ウェブフロントエンド > jsチュートリアル > JS strict モードの知識ポイントのまとめ (詳細な回答)

JS strict モードの知識ポイントのまとめ (詳細な回答)

亚连
リリース: 2018-05-18 16:53:50
オリジナル
1423 人が閲覧しました

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

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

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

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

a="test"

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

2. 変数の削除

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

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

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

  • eval()で宣言されたグローバル変数

1 番目と 2 番目のケースは、delete を使用して削除することはできません。

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

2 番目のケースのローカル変数はさらに悪いことです。添付されたオブジェクトが誰であるかさえわかります。

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

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

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

3. オブジェクト

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

  1. 読み取り専用プロパティに値を代入するとエラーが報告されます

  2. 構成可能なプロパティはエラーを報告します

  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 は常に指定された値になります。

rreee

以上が皆さんのためにまとめたもので、今後皆さんのお役に立てれば幸いです。

関連記事:

Vue.js+Flask シングルページAPPケースの構築詳細説明(コード付き)

JSを使用してコンピュータ構成を検出する方法

JSはイベントを使用要素にイベントを追加する委任

以上がJS strict モードの知識ポイントのまとめ (詳細な回答)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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