2017-08-05 134 views

回答

0

由于几个原因,严格模式不允许使用with语句。其中一些由道格拉斯克罗克福德在其着名的with Statement Considered Harmful文章中概述:简短的版本是,当你在with中使用标识符时,不可能仅仅通过查看代码(静态分析)来判断将解决什么,因为什么它的解决取决于所讨论的对象的内容。

考虑:

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

会发生什么?那个设置是o3.fooo2.fooo1.foo?全球foo

这使我们人类很难或不可能推断代码,并且使JavaScript引擎难以或不可能有意义地优化代码。

+1

谢谢你明确的答案。我也阅读了这篇文章,这更清晰。 –

相关问题