問題タブ [strict-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
621 参照

javascript - JavaScript の「厳格モード」に注意する必要がありますか?

ECMAScript 5 の厳密モードについて読むと、次のことがわかります。

特定の言語関数は非常に普及しているため、実行時チェックの実行にはかなりのパフォーマンス コストがかかります。いくつかの厳密モードの微調整に加えて、ユーザーが送信した JavaScript が厳密モード コードであり、特定の方法で呼び出されることを要求することで、これらの実行時チェックの必要性が大幅に減少します。

これらの調整のいくつかは次のとおりです。

  • /メソッドの最初の引数としてnull/を使用しないでください。undefinedcallapply
  • 関数内で新しいグローバル変数を作成しないでください。

質問:

  1. 厳密モードで作成された JavaScript フレームワークはありますか? では、「厳格な」コードが無駄にならないことを信頼できますか?

  2. 何としても注意を払うべきstrict modeですか?つまり、良い習慣としてやみくもに採用されているということですか?

0 投票する
9 に答える
72029 参照

javascript - 「厳密モード」とは何ですか? どのように使用されますか?

Mozilla Developer Networkの JavaScript リファレンスを調べていたところ、"strict mode". 私はそれを読み直しましたが、それが何をするのか理解するのに苦労しています。誰かが(一般的に)その目的とそれがどのように役立つかを簡単に説明できますか?

0 投票する
4 に答える
6859 参照

javascript - ストリクトモードの不明な環境でグローバルオブジェクトへの参照を取得する

不明なホスト環境でES5strictモードでグローバルオブジェクトへのハンドルを取得するための推奨される方法は何ですか?

ECMAScriptは、私が知っているグローバルオブジェクトを参照するための組み込みの方法を提供していません。もしそうなら、これは私が探している答えです。

既知の環境では、グローバルオブジェクトは通常自己参照プロパティを持っています。グローバルオブジェクトはグローバルスコープのVOであるため、グローバルオブジェクトのプロパティはグローバル変数であり、どこからでもグローバルオブジェクトへのハンドルを取得するために使用できます。

  • Webブラウザーでは、windowまたはを使用できますself

  • node.jsでは、を使用できますglobal

ただし、これは必ずしもすべてのホスト環境に当てはまるわけではありません。私の知る限り、WindowsScriptHostはグローバルオブジェクトにアクセスする方法を提供していません。WSHでグローバルオブジェクトを取得するための推奨される方法はthis、オブジェクトに解決されないコンテキストでキーワードを使用することです。例えば:

この手法は、どのホスト環境でも機能しますが、strictモードでは機能しません。これは、undefinedがstrictモードthisでグローバルオブジェクトを参照しないためです。

これが厳密なモードコード内で評価される場合、この値はオブジェクトに強制変換されません。nullまたは未定義のこの値はグローバルオブジェクトに変換されず、プリミティブ値はラッパーオブジェクトに変換されません。関数呼び出し(Function.prototype.applyおよびFunction.prototype.callを使用して行われた呼び出しを含む)を介して渡されたこの値は、渡されたこの値をオブジェクト(10.4.3、11.1.1、15.3.4.3、15.3)に強制しません。 4.4)。

予想どおり、次のコードは次のようになりますundefined


では、 strictモードに関係なく、任意の環境でグローバルオブジェクトへのハンドルを取得する適切な方法は何ですか?

ちなみに、私の現在のアプローチは、次のようにグローバルオブジェクトを参照するグローバル変数をスニッフィングすることです。

...そして使用するだけglobalです。これは多くの理由で悪い解決策だと思いますが、そのほとんどはかなり明白であり、WSHの問題に対処していません。

0 投票する
1 に答える
12105 参照

javascript - 厳密モードから発信者を取得するには?

厳密なコードと厳密でないコードを混在させることができます。ただし、caller への呼び出しが厳密なコードでなくても、caller を使用することはできません。誰かが回避策を知っていますか?

私はこれを試しました:

0 投票する
7 に答える
18322 参照

javascript - 厳密モードが適用されているかどうかを確認する方法はありますか?

とにかくストリクトモード'usestrict'が適用されているかどうかを確認する方法はありますか?ストリクトモード用に別のコードを実行し、非ストリクトモード用に他のコードを実行したいです。のような機能を探していますisStrictMode();//boolean

0 投票する
1 に答える
8044 参照

android - 厳密なモード違反リスト

シェルでadblogcatを実行すると、次のように表示されます

StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

  1. policy = 23はどういう意味ですか?
  2. 違反=2とは何ですか?

この値の意味を検索していましたが、違反やポリシーリストのドキュメントが見つからなかったか、検索結果の解釈が間違っていた可能性がありますが、これについての説明をいただければ幸いです。

0 投票する
1 に答える
220 参照

android - Android StrictMode:誤検知またはこのサンプルの何が問題になっていますか?

特定の条件(Webサイトコンテンツ)がtrueの場合に有効になるこのToggleButtonがあります。

getSystemOnState(..)はWebサーバーに接続しますが、これにより、厳密モードのために例外が発生します。Handlerクラスの使用方法の何が問題になっていますか?

0 投票する
5 に答える
6206 参照

javascript - FireBug と Chrome のコンソールで「厳格モード」を有効にすることは可能ですか?

このページでは:

Firebug コンソールは次のようになります。

しかし、これは成功しています:

delete foo;スクリプトが壊れないようにコメントアウトしても、「変数宣言を介して作成され、 DontDelete 属性barを持っているため、Global オブジェクトのプロパティである」という事実にもかかわらず、削除は成功します。

FireBug や Chrome のコンソールで「厳格モード」を有効にすることはできますか?

0 投票する
2 に答える
304 参照

javascript - 厳密モードは違反なしでこれを返します

私は自分のケーキを持って食べたい:thisオブジェクトにバインドされたときに連鎖のために戻りundefined、null|undefined スコープで呼び出されたときに戻るメソッドが必要です。これはうまくいくように見えますが、 JSLintに入れると Strict Violation エラーが発生します。厳密モードを使用する必要はありませんが、これは可能なはずであり、機能しているようです(コンソールを開きます)。これでよろしいですか、また/または他にどのようにこの効果を達成できますか?

そして、コンソールを見ると:

0 投票する
1 に答える
359 参照

javascript - javascriptでthisキーワードを使用したときに厳密な違反が発生した場合、どういう意味ですか?

誰かが私にこれについてアドバイスを与えることができますか?jslintを使い始めたところ、「dialog(this)」の行を指す「strictviolation」というエラーメッセージが表示されました-

私はこれまでこのメッセージを見たことがありません。どういう意味ですか?