为什么使用:表达&&代码中的表达式?

时间:2013-12-28 23:47:48

标签: javascript

以下JavaScript行的目的是什么?

for (p in d) d.hasOwnProperty(p) && h.push([p, d[p]]);

从我所看到的,它没有任何改变。这是否意味着:如果d具有属性pp并且d[p]可以推送到h而不是表达式为真?因此,如果h.push没有属性d,则p永远不会发生。

这正是我讨厌简洁代码的原因。

2 个答案:

答案 0 :(得分:1)

这个想法是,当使用&&时,首先评估左侧部分。当且仅当其返回值为真时,才评估正确的部分。

因此,对于每次迭代,首先评估d.hasOwnProperty(p)。如果结果为真,则评估h.push([p,d [p]])。

答案 1 :(得分:0)

这是

的捷径
for (p in d) if (d.hasOwnProperty(p)) h.push([p, d[p]]);