三元与逻辑运算符

时间:2014-02-18 14:19:44

标签: javascript ternary-operator logical-operators

道歉,如果这是一个骗局,我只看到or ||比较。

如果我想根据单个条件设置一个变量的值,b将始终求值为true(不是0,null,undefined),为什么我要使用三元运算符{{ 1}}超过逻辑a?b:c?它们似乎都执行精确相同的功能,尽管对jsperf的测试显示后者稍微快一些。

如果一个非常相似的操作和语法在同一个任务中胜过它,那么三元运算符的目的是什么?更奇怪的是,做什么让它变得更慢?

1 个答案:

答案 0 :(得分:4)

如果您想有条件地将值设置为0或某些非零值,该怎么办?

var x = condition() && 0 || 1;

这不起作用,因为0是假的。

var x = condition() ? 0 : 1;

将起作用,因为评估不依赖于强制布尔值。