优化 Internet Explorer JavaScript 性能
1. 评估局部变量
在 JavaScript 中,变量的访问是基于作用域链的,它会从最具体的作用域向最不具体的作用域反向解析。有时,这些符号查找可能会穿过多个作用域级别,最终对 IE DOM 进行通用查询,这可能会消耗大量资源。最糟糕的情况是,变量尚未存在,作用域链中的每个级别都被检查,结果发现需要创建一个扩展变量(附加到 DOM 元素的动态定义属性)。
以下是一个经典示例:
// 示例 9 - 2. 局部变量的符号查找
function test( )
{
some_variable = some_function( );
return some_variable + 1;
}
当尝试访问 some_variable 时,IE 会先检查它是否在 test() 函数中定义;如果没有,它会检查父函数,然后是祖父函数,直到到达 window 对象。发现 window 对象上没有名为 some_variable 的属性后,它会创建一个扩展变量并赋值。下次访问该变量时,它会沿着相同的查找链向上查找,这次会在 window 对象上找到该变量。
解决方案是使用 var 关键字确保变量仅在局部作用域中创建:
超级会员免费看
订阅专栏 解锁全文
25

被折叠的 条评论
为什么被折叠?



