三元运算符与逻辑运算符

3 javascript ternary-operator logical-operators

抱歉,这是一个骗子,我只看到了一个or ||比较。

如果我想基于一个条件设置一个变量的值,那么在哪里b总是计算为true(不是0,null,undefined),为什么a?b:c在逻辑上使用三元运算符a&&b||c呢?它们都似乎执行完全相同的功能,尽管对jsperf的测试表明后者的速度稍快。

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

Poi*_*nty 5

如果要有条件地将值设置为某个值0或某个非零值怎么办?

var x = condition() && 0 || 1;
Run Code Online (Sandbox Code Playgroud)

0是行不通的,因为是虚假的。

var x = condition() ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)

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