ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのstrictモード「use strict」の詳細説明

JavaScriptのstrictモード「use strict」の詳細説明

小云云
小云云オリジナル
2018-03-14 18:06:071416ブラウズ


通常の実行モードに加えて、ECMAscript 5 では 2 番目の実行モード「strict モード」が追加されています。名前が示すように、このモードでは Javascript がより厳しい条件で実行されます。

厳密モードを使用する理由

  • Javascript 構文の不合理で緩い側面を削除し、奇妙な動作を削減します。

  • コード実行の安全でない側面を削除し、コード実行の安全性を確保します。

  • コンパイラを改善します。効率性と実行速度の向上

  • 将来の Javascript の新しいバージョンへの道を開きます。

「Strict Mode」は、JavaScript のより合理的で安全かつ厳格な開発方向を反映しており、IE 10 を含む主流ブラウザはすでにそれをサポートしており、多くの大規模プロジェクトがそれを完全に採用し始めています。

一方、同じコードでも「厳密モード」では実行結果が異なる場合があります。「通常モード」で実行できる一部のステートメントは「厳密モード」では実行されません。これらの内容をマスターすると、JavaScript をより詳しく理解し、より優れたプログラマーになれるでしょう。

フラグを入力

"use strict";

呼び出し方法

単一スクリプトの場合

 <script>    &quot;use strict&quot;;
    console.log("这是严格模式。");
  </script>

単一関数の場合

function strict(){    "use strict";
    return "这是严格模式。";
  }
  function notStrict() {    return "这是正常模式。";
  }

構文と動作の変更

厳密モードでは、JavaScriptの構文と動作にいくつかの変更が加えられました。

グローバル変数の明示的な宣言

通常モードでは、宣言されずに変数に値が割り当てられると、デフォルトでグローバル変数になります。厳密モードではこの使用は禁止されており、グローバル変数は明示的に宣言する必要があります。

"use strict";
  v = 1; // 报错,v未声明  for(i = 0; i < 2; i++) { // 报错,i未声明  }

したがって、strict モードでは、使用する前に var コマンドで変数を宣言する必要があります。

this キーワードはグローバル オブジェクトを指すことを禁止されています

function f(){    return !this;
  } 
  // 返回false,因为"this"指向全局对象,"!this"就是false  function f(){     "use strict";
    return !this;
  } 
  // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

そのため、コンストラクターを使用するときに new を追加するのを忘れると、this キーワードはグローバル オブジェクトを指すことはなくなり、エラーが報告されます。

function f(){    "use strict";
    this.a = 1;
  };
  f();// 报错,this未定义

変数の削除は禁止されています

厳密モードでは変数を削除できません。構成可能項目が true に設定されているオブジェクト プロパティのみを削除できます。

"use strict";
  var x;
  delete x; // 语法错误  var o = Object.create(null, {'x': {
      value: 1,
      configurable: true  }});
  delete o.x; // 删除成功

オブジェクトは重複した名前の属性を持つことはできません

通常モードでは、オブジェクトに重複した名前の属性が複数ある場合、最後に割り当てられた属性が以前の値を上書きします。厳密モードでは、これは構文エラーです。

"use strict";
  var o = {
    p: 1,
    p: 2  }; // 语法错误

関数には同じ名前のパラメータを持つことはできません

通常モードでは、関数に同じ名前のパラメータが複数ある場合、arguments[i]を使用してそれらを読み取ることができます。厳密モードでは、これは構文エラーです。

 "use strict";
  function f(a, a, b) { // 语法错误    return ;
  }

関連する推奨事項:

JS strict モードの例の説明

JavaScript の strict モードの詳細な紹介

JavaScript strict モードの詳細な説明_javascript スキル

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

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