2017-08-05 19 views

答えて

0

厳密モードでは、いくつかの理由でwithステートメントが許可されませんでした。そのうちのいくつかは、有名なwith Statement Considered Harmfulの投稿でDouglas Crockfordによって概説されています。短いバージョンでは、withの識別子を使用すると、コードを調べるだけでは解決できないことがあります。それは問題のオブジェクトの内容に依存します。

は考えてみましょう:何が起こる

with (o1) { 
    with (o2) { 
     with (o3) { 
      foo = "bar"; 
     } 
    } 
} 

?その設定はo3.fooですか? o2.fooo1.foo?グローバルfoo

これにより、私たちの人間はコードを推論することが困難または不可能になり、JavaScriptエンジンがコードを有意義に最適化することが困難または不可能になります。

+1

を見てとることができ明確な答えをいただき、ありがとうございます。私はあまりにも読んで行って、それははるかに明確です。 –

0

迷惑なバグや互換性の問題の原因になる可能性があるため、withステートメントの使用は推奨されていません。厳格モードでは禁止されています。
ベストプラクティス:withステートメントを使用しないでください。代わりにIIFE

1を使用してみてください:http://2ality.com/2011/02/javascript-variable-scoping-and-its.html
あなたもJavaScript’s with statement and why it’s deprecated

関連する問題