JavaScript中的(cond&& value || default_value)和(cond?value:default_value)之间有什么区别吗?

时间:2015-11-09 06:38:50

标签: javascript

两个表达式似乎产生相同的结果。它们之间有什么区别吗?

1 个答案:

答案 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`

现场演示:http://jsfiddle.net/artxvLab/