两个表达式似乎产生相同的结果。它们之间有什么区别吗?
答案 0 :(得分:5)
如果您的cond
条件是真实的,但value
没有,则第一个表达式将转到default_value
,而您的第二个表达式将尽快value
因为cond
是真实的,无论实际是value
。
示例:
var cond = true,
value = false,
default_value = "whatever";
cond && value || default_value; // gives "whatever"
cond ? value : default_value; // gives `false`
value = "truthy";
cond && value || default_value; // gives "truthy"
cond ? value : default_value; // gives "truthy"
value = null; // or `undefined`, or "" (empty string), or any falsy value.
cond && value || default_value; // gives "whatever"
cond ? value : default_value; // gives `null` (or `undefined`, or "")
// or whatever is in `value`