問題タブ [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 投票する
1 に答える
136 参照

javascript - Opera で (0 || eval) が間接として扱われないのはなぜですか?

strict モードでは、 への間接呼び出しは eval コードでグローバル オブジェクトにバインドされているeval必要があります。this

10.4.2: 第 5 版では、eval 関数への間接呼び出しは、eval コードの変数環境とレキシカル環境の両方としてグローバル環境を使用します。第 3 版では、間接 eval の呼び出し元の変数および字句環境が、eval コードの環境として使用されました。

ただし、Opera では、この式は次のようになりundefinedます。

Chrome と Firefox は期待どおりに動作します。

ここでこれを見つけました:http://kangax.github.com/jstests/indirect-eval-testsuite/

これはブラウザのバグですか?もしそうなら、それはまだ追跡されていますか?

Opera と Safari で一部の形式の間接評価が失敗するのはなぜですか?も参照してください。

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

javascript - プロトタイプ (Object.defineProperty) に読み取り専用プロパティが設定されている場合は例外ではありません

オブジェクトの読み取り専用プロパティと適切な単体テストを作成しました。

しかし、個々のインスタンスではなく、プロトタイプに読み取り専用プロパティを配置する必要があることに気付きました。コードを変更したら、テストの 1 つが失敗しました。

プロトタイプの読み取り専用プロパティを削除しても例外はスローされませんが、プロパティがオブジェクトにある場合は例外がスローされるようです。

問題を示すためにhttp://jsfiddle.net/pdgreen/3BGfM/を作成しました。chrome と firefox の Mac でも同様の動作を確認しました。

これは正しいことですか?プロパティがオブジェクトにある場合、例外がスローされますが、プロトタイプでは例外がスローされないのはなぜですか? これは私を驚かせます。なぜそうなのか、誰か説明できますか?

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

powershell - デフォルト値にアクセスする動的パラメーター

を使用して検証されたオプションのパラメーターを受け取る PowerShell 関数があり、ValidateSetAttributeその値に基づいて別の動的パラメーターを追加します。ただし、厳密モードでは、ブロック内のパラメーターにアクセスしようとすると、そのパラメーターをDynamicParam明示的に設定していないと、変数が定義されていないというエラーが発生します。

スクリプトは、AまたはBを最初のパラメーターとして呼び出すと機能しますが、パラメーターを省略すると失敗します。興味深いことに、パラメーター定義からParameterAttributeまたはを削除すると、機能します。ValidateSetAttribute

私の現在の回避策は、次のように、を使用して変数にアクセスし$PSBoundParameters、パラメーターが設定されているかどうかを確認することです。

Aこれは正常に機能しますが、代わりに値を確認したい場合は、1 つの欠点Aがあります。パラメーターの既定値$PSBoundParametersと同様に、パラメーターが省略され、既定値が適用されると、追加されません。したがって、チェックを変更して、次のことを明示的にチェックする必要があります。

このソリューションは、動的パラメーターの追加をデフォルト値と不必要に結びつけるので、あまり好きではありません。理想的には、他に何も触れずにデフォルト値を変更できるようにしたいと考えています。DynamicParamブロック内から実際のパラメータ値にアクセスする方法はありますか? または、少なくともパラメーター定義にアクセスしてデフォルト値にアクセスする可能性はありますか?

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

javascript - Javascript5 strict モードで削除が許可されないのはなぜですか?

私はjavascriptにかなり慣れていません。どうやら「use strict」モードで操作していると、オブジェクトを削除できないことに気付きました。私は物事を削除することはあまり好きではありません (理論的にはスコープがそれを処理するはずなので) が、この機能を削除した動機は何だったのだろうか?

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

javascript - body.scrollTop が廃止されたのはなぜですか?

body.scrollTop(およびbody.scrollLeft) は ES5 の厳密モードでは非推奨になっているようです。これらのプロパティを他の で使用しても問題ないように思われるのに、この理由は何DOMElementですか?

背景情報:

これらのいずれかが実際に変更されるまで、scrollTopのすべての祖先の値を増加 (または指定に従って減少) しようとする関数があります。厳密モードに不満を持ち続けるために、親のチェーンが上に移動するときに要素をelement具体的にチェックする必要があるかどうか疑問に思っています。body

[明らかに、body参照document.body]

0 投票する
3 に答える
6095 参照

android - 厳密モード「リソースは添付されたスタック トレースで取得されましたが、解放されませんでした」Google マップでの例外

アプリの起動時に、厳密モードで次の例外が発生します。ログイン アクティビティが閉じられた直後、SupportMapFragment を含むメイン アクティビティが表示される直前。

10-29 16:11:22.605: E/StrictMode(1121): 添付のスタック トレースでリソースが取得されましたが、解放されませんでした。リソース リークを回避する方法については、java.io.Closeable を参照してください。
10-29 16:11:22.605: E/StrictMode(1121): java.lang.Throwable: 明示的な終了メソッド 'close' が呼び出されていません
10-29 16:11:22.605: E/StrictMode(1121): dalvik.system で.CloseGuard.open(CloseGuard.java:184)
10-29 16:11:22.605: E/StrictMode(1121): java.io.RandomAccessFile で。< init >(RandomAccessFile.java:128)
10-29 16:11 :22.605: E/StrictMode(1121): maps.da< init >(不明なソース)
10-29 16:11:22.605: E/StrictMode(1121): maps.dba(不明なソース)
10-29 16: 11:22.605: E/StrictMode(1121): maps.mha (不明なソース)
10-29 16:11:22.605: E/StrictMode(1121): maps.maa(不明なソース)
10-29 16:11:22.605: E/StrictMode(1121): maps.mua(不明なソース)
10- 29 16:11:22.605: E/StrictMode(1121): maps.knc(不明なソース)
10-29 16:11:22.605: E/StrictMode(1121): maps.ao.b.run(不明なソース)
10-29 16:11:22.605: W/System.err(1121): POLICY_DEATH による StrictMode VmPolicy 違反。シャットダウンしています。

主な活動のGoogleMapに関連しているようです。しかし、そこで閉じる必要があるのは何ですか?任意の考え/アイデアをいただければ幸いです。

0 投票する
3 に答える
272 参照

javascript - 適切な代替手段がないarguments.calleeの使用が存在しますか?

arguments.calleeについては多くの誤りがあり、実行可能なES5 の厳格なモードの代替手段に実際に置き換えることができないユースケースが存在するかどうかを理解しようとしています。

MDN の arguments.calleeドキュメントでは、arguments.callee の使用を指摘していますが、以下のコード例では適切な代替手段はありません。

彼らはバグを包括的にリンクして、argument.calleeをES5 strict modeに準拠したコードに置き換えることができない場合があることを示しました。

ただし、例として使用したコードは、次の厳格モードの代替手段に置き換えることができます。

それを指摘して、arguments.calleeを置き換えることができないいくつかのアルゴリズムが実際に存在しますか?

バウンティ

arguments.callee報奨金を獲得するために、別のソリューションを使用することがはるかに不明瞭または不可能になる場所の使用法を回答に含めたいと思います。

MDN の例では、代替として私が書いたバージョンは、そのコードの使用法を変更しません。