我坚持以下内容:
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
的第2个操作数不会覆盖undefined
个操作数?
谢谢!
答案 0 :(得分:1)
||
运算符返回其左侧操作数(如果它是真值),否则返回右侧操作数。
在您的示例中,所有操作数都具有falsey值,因此复合||
语句返回最右侧的值。
在JS中,以下内容都是假的:0
,""
(空字符串),undefined
,null
,NaN
。当然还有false
。所有其他值都是真实的(包括"0"
或"false"
等字符串,因为它们不是空字符串。)