我有一个变量,它是根据一个对象是否有一个长度作为其属性之一来设置的。如果没有,那么我需要检查是否存在其中一个属性。如果是,则获取存储在该对象中的第一个数组并返回长度,否则将该变量设置为1。这可以在这样的声明中合并。
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引擎如何看待它们有什么不同吗?我更喜欢第一种方式的原因是它让我无法拥有一堆额外的辅助函数。
答案 0 :(得分:1)
执行并丢弃匿名内联版本。而单独的函数实例是
a)保留在内存中并弹出其余的局部变量,如果它在函数中声明
b)如果在全局空间中将其定义为窗口对象的成员,则在内存中保留页面的生命周期。
所以如果你不太可能再次需要它,最好采用我认为的匿名内联路线。