2013-04-20 81 views
1

我琢磨这个:JavaScript的可变分辨率

function outer() 
{ 
    var myVar = 1; 

    function inner() 
    { 
     alert(myVar); 
    } 
} 

现在,据我所知,这将导致该变量两个查找 - 一个查找,检查局部变量在内部函数和一个查询外部函数 - 在此处找到变量。

的问题是 - 这将是对性能有特别大的漏相比,这时候:

function myFunc() 
{ 
    var myVar = 1; 

    alert(myVar); 
} 

这将只需要该变量的一个查找 - 它然后找到一个局部变量。

+3

你永远不会调用'inner'函数。另外,不,这不会影响性能。 – Paulpro 2013-04-20 22:36:06

+0

您是否将此代码识别为性能瓶颈?如果不是,从可维护性/代码组织的角度出发写一个最有意义的。 – 2013-04-20 22:38:16

+0

@AndrewWhitaker:明显的答案是显而易见的。 – Charles 2013-04-20 22:40:07

回答

1

在较老的JS引擎中,范围查找可能会对性能造成一些影响。

然而,即使年前,这是一个非常微小的差异 - 并不是真的有什么担心。

今天的引擎最有可能像这样优化查找,一般来说它们的性能要好得多。除非你正在写一些完全疯狂的东西,或者针对性能非常差的设备,否则这不是你需要担心的。