我从库中获得了一段代码,其中包含以下内容。 options = options || {}
的目的是什么?
var x = function(options) {
options = options || {};
if ('select_message' in options)
options.selectMessage = options.select_message;
// something else
}
乍一看,似乎选项将变为true或false,因为它使用布尔运算符。但这并没有多大意义。我的假设是它确保“选项”不会被定义,例如下面的内容。
if (typeof options != 'undefined')
options = {};
答案 0 :(得分:3)
如果options
为falsy(undefined
,false
,null
,0
等,则会为其分配{}
(匿名对象)。当可以通过对象提供可选参数时,这是一种常见模式。通过确保至少为匿名对象分配options
,它使得以后代码在访问选项属性时不必检查它是否已定义(如options.something
)。
MDN:Falsy
答案 1 :(得分:1)
||是一个二元运算符,它将返回第一个truthy值。如果你做布尔({})=>真正。如果未定义选项,则返回{}并将选项设置为此值。
你的想法是正确的。如果选项传递的是" truthy" (http://www.sitepoint.com/javascript-truthy-falsy/),对象设置为自身,或者只是保持相同的对象。如果它是" falsey",它将被设置为空对象。