答:http://www.jb51.net/article/79474.htm工具
|
这段代码将with语句做用到了obj对象上,而后直接使用a访问obj的a属性,按照前面说到的观点,访问a属性时,是一次性就能够在obj上找到该属性的,可是为何代码性能依旧下降了呢。 真正的缘由是:使用了with关键字后,JS引擎没法对这段代码进行优化。 JS引擎在代码执行以前有一个编译阶段,在不使用with关键字的时候,js引擎知道a是obj上的一个属性,它就能够静态分析代码来加强标识符的解析,从而优化了代码,所以代码执行的效率就提升了。使用了with关键字后,js引擎没法分辨出a变量是局部变量仍是obj的一个属性,所以,js引擎在遇到with关键字后,它就会对这段代码放弃优化,因此执行效率就下降了。 使用with关键字对性能的影响还有一点就是js压缩工具,它没法对这段代码进行压缩,这也是影响性能的一个因素。