首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript性能:` `if (a in b) {b[a]()}‘vs `a in b&b[a]();’vs对象遍历

Javascript性能:` `if (a in b) {b[a]()}‘vs `a in b&b[a]();’vs对象遍历
EN

Stack Overflow用户
提问于 2016-09-01 13:24:36
回答 2查看 61关注 0票数 0

我注意到我可以用a && b();作为if(a) {b()}if(a) b();的缩写。这种优柔寡断最常见的情况是对象具有4-5个元素。

问:与if(){}的迭代或遍历for (var i in b) { b[i]() }的常规对象相比,使用速记是否存在性能损益?

建议:一些代码

代码语言:javascript
复制
var b = { x: 20, y: 30 }, // sample object
    fn = function(v){ return v+5; }, // sample function
    endValue = 0; // some lol

// go through all elements via if
if ('x' in b) { endValue += fn(b['x']); }
if ('y' in b) { endValue += fn(b['y']); }

//go through all elements via shorthand
('x' in b) && (endValue += fn(b['x'])); 
('y' in b) && (endValue += fn(b['y']));

//go through all elements via object traversing
for (var i in b) {
  endValue += fn(b[i]);
}

我假设可能有非常微不足道的性能差异,我需要使用上面的速记方法在endValue的计算中有一个非常具体的对象元素的顺序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 13:51:04

if(){}相比,使用速记是否存在性能损益?

不是的。对于任何合适的编译器,它们的性能都是完全相同的。但是,为了可读性和简洁性,您应该使用if语句。

使用遍历for (var i in b) { b[i]() }的常规对象if(){}的迭代是否有性能增益/损失?

这是无法真正比较的,因为他们正在做根本不同的事情,并且假设他们有相同的结果,那么性能在很大程度上取决于您传入的实际对象及其属性。用你需要的行为。

票数 2
EN

Stack Overflow用户

发布于 2016-09-01 13:31:03

google的闭包编译器广泛使用速记代码,从基准测试来看,性能得到了很小的提高。https://closure-compiler.appspot.com/home

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39272769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档