如果这是重复的问题,我很抱歉,我只看到了一个or ||
比较。
如果我想基于单个条件设置一个变量的值,其中b
将始终评估为true
(不是0、null、undefined),为什么要使用三元运算符a?b:c
而不是逻辑运算符a&&b||c
?它们都似乎执行相同的功能,尽管jsperf上的测试显示后者略快。
如果非常类似的操作和语法在相同的任务中表现更好,那么三元运算符的目的是什么呢?更奇怪的是,它做了什么才会使其速度较慢?
如果这是重复的问题,我很抱歉,我只看到了一个or ||
比较。
如果我想基于单个条件设置一个变量的值,其中b
将始终评估为true
(不是0、null、undefined),为什么要使用三元运算符a?b:c
而不是逻辑运算符a&&b||c
?它们都似乎执行相同的功能,尽管jsperf上的测试显示后者略快。
如果非常类似的操作和语法在相同的任务中表现更好,那么三元运算符的目的是什么呢?更奇怪的是,它做了什么才会使其速度较慢?
如果您想根据条件将值设置为0
或某个非零值,该怎么办?
var x = condition() && 0 || 1;
这样是不行的,因为 0
是假值。
var x = condition() ? 0 : 1;
这将起作用,因为评估不依赖于强制转换的布尔值。
1 ? 0 : 2
和1 && 0 || 2
。 - Frédéric Hamidi