0

我坚持以下几点:

foo = properties[field] || overrides.default || config.widget.default || undefined;

console.log(properties[field])     // undefined
console.log(overrides.default)     // 0
console.log(config.widget.default) // undefined

所以据我了解,foo应该是0。然而……这是undefined

这仍然有效:

foo = properties[field] || overrides.default;

但是一旦我添加另一个 OR 选项,它就不再起作用了。

问题
为什么我的第二个操作数value=0没有覆盖undefined操作数?

谢谢!

4

1 回答 1

1

如果为真,则运算符返回其||左侧操作数,否则返回右侧操作数。

在您的示例中,所有操作数都有错误值,因此复合||语句返回最右边的值。

在 JS 中,以下都是假的:0, ""(空字符串), undefined, null, NaN. 当然false。所有其他值都是真实的(包括类似"0"或的字符串,"false"因为它们不是空字符串)。

于 2013-09-12T11:45:02.133 回答