ホームページ  >  記事  >  ウェブフロントエンド  >  JS strict モードを詳しく説明する知識ポイントとは何ですか?

JS strict モードを詳しく説明する知識ポイントとは何ですか?

亚连
亚连オリジナル
2018-06-04 11:17:121511ブラウズ

この記事には、JS strict モードでの関連する知識ポイントとコード例がまとめられています。興味がある方は、一緒に学びましょう。

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

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

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

a="test"

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

2. 変数の削除

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

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

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

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

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

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

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

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

本題に戻ります。つまり、非厳密モードでは変数を削除できますが、失敗して 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を使用してmp3オーディオファイルを追加する方法

JSでFileReaderを使用して写真をアップロードする前にローカルプレビュー機能を実装する方法

に従ってデフォルトで選択されたオプションを設定する方法タグを選択してください?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。