1. 概要1.1 厳密モードとは何ですか?厳密モードは、 現在、ほとんどのブラウザは厳格モードをサポートしていますが、一部の古いバージョンのブラウザはまだ厳格モードをサポートしていないため、厳格モードの機能をテストせずに厳格モードを使用しないでください。 1.2 厳密モードの目的厳密モードを使用する目的は次のとおりです。 まず、厳密モードでは、 2. 厳密モードを有効にする
2.1 厳格モードをグローバルに有効にするグローバル厳格モードを有効にするには、すべてのコードの前に文字列を入力するだけです。文字列は次のとおりです。 "use strict"; // または 'use strict'; 前の 2.2 ローカルで厳密モードを有効にするローカルで厳密モードを有効にするには、指定した関数の最初の行に文字列「 厳密モードを有効にするサンプルコードは次のとおりです。 //厳密モードをグローバルに有効にする //"use strict" 100 です コンソールログ(v) 関数fun() { // ローカルで厳密モードを有効にする 'use strict' 200 です コンソールログ(vv) } // fun() は例外をスローします vv は定義されていません 3. 厳密モードの変数3.1 変数の偶発的な作成を防ぐいわゆる誤って作成された変数は、var キーワードを使用せずに宣言された変数です。厳密モードでは、グローバル変数が誤って作成されると例外がスローされます。 サンプルコードは次のとおりです。 「厳密な使用」 // 非厳密モードでは、このような変数を作成してもエラーは報告されませんが、厳密モードでは、このような変数を作成すると例外がスローされます v = 100 コンソールログ(v) 3.2 サイレント失敗が例外に変わるサイレント失敗はエラーも影響もないことを意味します。厳密モードでは例外に変換されます。 3.3 削除キーワードを無効にする非厳密モードでは、グローバル変数でdeleteキーワードを使用すると何も表示されずに失敗しますが、厳密モードでは例外がスローされます。サンプルコードは次のとおりです。 「厳密な使用」 変数v = 100 delete v // SyntaxError: Deleteofanunqualifiedidentifierinstrictmode. コンソールログ(v) 3.4 変数名の制限厳密モードでは、 4. 厳密モードのオブジェクト4.1 削除できない属性非厳密モードでは、削除できないプロパティで サンプルコードは次のとおりです。 「厳密な使用」 delete Object.prototype; //例外をスローする 4.2 読み取り専用プロパティの割り当て非厳密モードでは、読み取り専用プロパティに値を割り当てると何も表示されずに失敗しますが、厳密モードでは例外がスローされます。サンプル コードは次のとおりです。 「厳密な使用」 var obj = {} オブジェクト.defineProperty(obj, 'name', { 価値: 「お粥一杯」 }) obj.name = 'Yiwan Zhou' //例外をスローします 4.3 拡張不可能なオブジェクト拡張不可能なオブジェクトに新しいプロパティを追加すると、非厳密モードでは何も表示されずに失敗しますが、厳密モードでは例外がスローされます。 サンプルコードは次のとおりです。 // グローバル厳格モードを有効にする 'use strict' var obj = {} //拡張不可にする Object.preventExtensions(obj) //オブジェクト属性を拡張します。obj.name = 'Yiwan Zhou' //例外をスローします 5. 厳密モードでの機能5.1 パラメータ名は一意でなければならない非厳密モードでは関数パラメータを繰り返すことができますが、厳密モードでは関数パラメータが繰り返されると例外がスローされます。サンプルコードは次のとおりです。 「厳密な使用」 関数fun(a, a, b) { コンソールログ(a + a + b) } /* *非厳密モードでの結果は7=2+2+3です *厳密モードでは例外がスローされます*/ 楽しい(1, 2, 3) 5.2 議論の相違
違いは次のとおりです。
サンプルコードは次のとおりです。 「厳密な使用」 関数fun(v) { '100' の場合 コンソールログ(v) コンソール.log(引数[0]) } /* * 非厳密モードで印刷された結果は100、100 *厳密モードで印刷された結果は100、200です */ 楽しい(200) 5.3 arguments.callee プロパティ非厳密モードでは、現在の関数名を返す サンプルコードは次のとおりです。 「厳密な使用」 関数fun(){ console.log(引数.呼び出し先); } fun()//例外をスローする 5.4 関数宣言の制限厳密モードでは、関数はグローバル スコープとローカル スコープでのみ宣言できます。これらの 2 つのスコープの外部 (if ステートメント ブロックなど) で関数構文を宣言するとエラーになります。 サンプルコードは次のとおりです。 「厳密な使用」 関数fun() { console.log(引数.呼び出し先) } fun() //例外をスローする 6. eval() のスコープを拡大する厳密モードでは、 外部で使用すると例外がスローされます。サンプルコードは次のとおりです。 「厳密な使用」 評価('var v=100') console.log(v) //例外をスローする 7. これを抑制する
サンプルコードは次のとおりです。 // 厳密モードを有効にする 'use strict' 変数v = 100 関数fn() { コンソールログ(this.v) } var obj = { v: 200, } fn.call(obj) //これはグローバルオブジェクトを指します 結論: この記事では基本的に、厳格モードのすべての状況を紹介しており、日常の開発における厳格モードに関連する問題を解決するのに十分です。 これで、 以下もご興味があるかもしれません:
|
<<: dockerfile-maven-plugin 使用ガイドの概要
>>: 適応幅(パーセンテージ)に応じて Div の高さを調整する純粋な CSS
ELKとは何ですか? ELK は、Elastic が提供するログ収集およびフロントエンド表示ソリュー...
目次手動バックアップタイマーバックアップ手動バックアップ1) cmd コンソール: mysqldum...
mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...
目次1. 遅延読み込みとは何ですか? 2. 遅延読み込みを実装する🌄: 2.1 最初の方法: 2.2...
序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...
目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...
改訂版のプレビューこの記事は 3 日前に書かれたものです。先輩の同僚から改訂の提案をいくつかいただき...
解決策1: msvcr100.dll ファイルをダウンロードし (インターネットからソース ファイル...
私は最近、空洞化効果について研究しました。背景クリップ: テキスト背景はテキストの前景色にクリップさ...
この記事では、画像テキストセグメンテーションを実装するためのNodeJSの具体的なコードを参考までに...
目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...
問題の説明:最近、rsyncで毎回同期するデータ量が多いが、データベースのbakファイルを保持する必...
Vue でタブ切り替えを実装する 3 つの方法1. v-showはコンテンツの切り替えを制御します1...
Java環境変数を設定するここで、環境変数は etc/profile に設定され、つまり、すべてのユ...
今日、IE8 をインストールしました。ダウンロードするために Microsoft の Web サイト...