1. ホーム
  2. ジャバスクリプト

[解決済み】Node.jsの'use strict'文はどのように解釈されるのですか?[重複している]

2022-04-11 12:07:46

質問

Node.js、Express.js、jadeなどの流れを理解するために、Node.jsの探求を始め、多くのデモウェブアプリケーションを書きました。

しかし、最近出会ったのは、以下の記述です。 "use strict" を関数内の1行目として使用し、すべての .js ファイルを作成します。

Node.jsでは具体的にどのように解釈されるのでしょうか?

どのように解決するのですか?

"use strict";

基本的にストリクトモードを有効にします。

ストリクトモードとは、プログラム、または関数を "ストリクト" 動作コンテキストに置くことができる機能です。ストリクト・オペレーティング・コンテキストでは、メソッド形式では従来通りこれをオブジェクトにバインドします。関数形式では、グローバルセットオブジェクトではなく、未定義にバインドされます。

あなたのコメントにあるように、いくつかの違いがあることを伝えています。しかし、それはあなたの思い込みです。Node.jsのコードは、あなたのJavaScriptのコードにほかなりません。Node.jsのコードはすべて V8 JavaScriptエンジン . その V8 JavaScriptエンジン は、GoogleがChromeウェブブラウザのために開発したオープンソースのJavaScriptエンジンです。

ということは "use strict"; は、ChromeブラウザとNode.jsで解釈されます。

JavaScriptのストリクトモードとはをご覧ください。

詳しくはこちら

  1. ストリクトモード
  2. ECMAScript 5 Strict モードのブラウザによるサポート
  3. ストリクトモードが街にやってくる
  4. ストリクトモード用互換性テーブル
  5. Stack Overflow questions: JavaScript &で'use strict'は何をするのですか?


ECMAScript 6です。

ECMAScript 6 コード & ストリクトモード。以下はその概要です。 仕様書より :

10.2.1 ストリクトモードコード

ECMAScript Script の構文ユニットは、無制限モードまたは厳密モードの構文とセマンティックスのいずれかを使用して処理される場合があります。コードは、以下の状況ではストリクトモードコードとして解釈されます。

  • グローバルコードは、Use Strict ディレクティブ (14.1.1 参照) を含むディレクティブプロログで始まっていれば、ストリクトモードコードです。
  • モジュールコードは常にストリクトモードコードです。
  • ClassDeclaration または ClassExpression のすべての部分は、ストリクト・モード・コードです。
  • eval コードは、Use Strict ディレクティブを含むディレクティブプロログで始まる場合、または eval の呼び出しがストリクトモードコードに含まれる直接 eval (12.3.4.1 参照) の場合、ストリクトモードコードになります。
  • 関数コードは、関連する FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition, ArrowFunction がストリクトモードコードに含まれるか、関数の内部スロット [[ECMAScriptCode]] の値を生成するコードが Use Strict 指示子を含む Directive Prologue から始まる場合は、ストリクトモードコードになります。
  • 組み込みの Function および Generator コンストラクタの引数として提供される関数コードは、最後の引数が String で、処理時に Use Strict ディレクティブを含む Directive Prologue で始まる FunctionBody である場合、ストリクトモードコードになります。

また、現在のNode.jsのバージョンでどのような機能がサポートされているか迷った場合は、以下のサイトを参照してください。 node.green と同じデータを使用しています。 カンガックス ).