0

我有一个变量,该变量基于对象是否具有长度作为其属性之一来设置。如果没有,那么我需要检查其中一个属性是否存在。如果是这样,则获取存储在该对象中的第一个数组并返回长度,否则将变量设置为一个。这可以在这样的语句中组合起来。

var b=someObject;
var len = b.num||(b.arrs?(function(a){for(var x in a)return a[x].length})(b.arrs):false)||1;

这样做的另一种方法是拉出功能并像这样

function getLength(a){for(var x in a)return a[x].length})
var b=someObject;
var len = b.num||(b.arrs?getLength(b.arrs):false)||1;

我想知道与另一种方式相比,这样做是否会降低性能?javascript引擎对它们的看法有什么不同吗?我更喜欢第一种方法的原因是它使我无法拥有一堆额外的辅助函数。

4

1 回答 1

1

匿名内联版本被执行并丢弃。而单独的函数实例是

a) 如果在函数中声明,则保留在内存中并与其余的局部变量一起弹出

b) 如果页面在全局空间中定义为窗口对象的成员,则在页面的整个生命周期内保存在内存中。

因此,如果您不太可能再次需要它,最好走匿名内联路线,我相信。

于 2012-09-29T18:53:26.217 回答