三元运算符或单行 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()
应该就是你要找的
我正在为 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()
a = func1() || func2()
应该就是你要找的