三元运算符或单行 IF 哪个更有效?

Which is more efficient Ternary operator or one-line IF?

我正在为 nodejs 重写 python 代码,我想知道哪个更有效:

a = func1()
a = a ? a : func2()

a = func1()
if (!a) a = func2()

原来,我把第一个块写成:

a = func1() ? func1() : func2()

但我认为这最终会调用 func1() 两次,因此首先将其分配给一个变量。

注意:我不小心把这个贴到了 ServerFault 上。感谢 cyberx86 (https://serverfault.com/users/86472/cyberx86) 指出这一点并表示性能可以忽略不计。并提出建议:

a = func1() || func2()

更新: 对于像我这样的新手程序员,上面的行是 "short-circuit"。意思是如果 func1() returns true,它不需要计算 func2()

的 return 值

a = func1() || func2() 应该就是你要找的