私の厳密なモードでステートメントを使用すると、エラーが表示されます:JavascriptのStrictモードでなぜwithステートメントを使用できないのですか?
'with'は厳密モードでは使用できません。
私の厳密なモードでステートメントを使用すると、エラーが表示されます:JavascriptのStrictモードでなぜwithステートメントを使用できないのですか?
'with'は厳密モードでは使用できません。
厳密モードでは、いくつかの理由でwith
ステートメントが許可されませんでした。そのうちのいくつかは、有名なwith Statement Considered Harmfulの投稿でDouglas Crockfordによって概説されています。短いバージョンでは、with
の識別子を使用すると、コードを調べるだけでは解決できないことがあります。それは問題のオブジェクトの内容に依存します。
は考えてみましょう:何が起こる
with (o1) {
with (o2) {
with (o3) {
foo = "bar";
}
}
}
?その設定はo3.foo
ですか? o2.foo
? o1.foo
?グローバルfoo
?
これにより、私たちの人間はコードを推論することが困難または不可能になり、JavaScriptエンジンがコードを有意義に最適化することが困難または不可能になります。
迷惑なバグや互換性の問題の原因になる可能性があるため、withステートメントの使用は推奨されていません。厳格モードでは禁止されています。
ベストプラクティス:withステートメントを使用しないでください。代わりにIIFE
1を使用してみてください:http://2ality.com/2011/02/javascript-variable-scoping-and-its.html
あなたもJavaScript’s with statement and why it’s deprecated
を見てとることができ明確な答えをいただき、ありがとうございます。私はあまりにも読んで行って、それははるかに明確です。 –