JavaScript慎用with

王朝学院·作者佚名  2009-01-16
窄屏简体版  字體: 小  |  中  |  大  |  超大  

像我这样最初并不是系统学习JavaScript的人,看到with这个东西的第一感觉是兴奋——不用再重复地写“element.style.xxx = …”了,只需要

view plaincopy to clipboardprint?

with (element.style) {

xxx = ...;

yyy = ...;

...

}

with (element.style) {

xxx = ...;

yyy = ...;

...

}但是作为解释型语言,JavaScript都需要在运行时来决定xxx/yyy到底是什么东西。对每一个名字(不仅仅是被赋值的,也包括读取的变量!)它会首先去在with括号里的对象的属性里去寻找,然后才会找局部变量,最后是全局变量。在JavaScript的虚拟机、JIT技术普及之前,这种性能问题需要非常的注意。

正确的做法是给element.style做一个local variable的cache:

view plaincopy to clipboardprint?

var es = element.style;

es.xxx = ...;

es.yyy = ...;

...

var es = element.style;

es.xxx = ...;

es.yyy = ...;

...这样不仅相对减少了代码大小,同时性能上也比element.style.xxx = … 要好得多。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航