我遇到了这段代码:
function extend(out){
out = out || {};
for (var i = 1; i < arguments.length; i++){
var obj = arguments[i];
if (!obj) continue;
for (var key in obj){
if (obj.hasOwnProperty(key))
out[key] = (typeof obj[key] === 'object') ? extend(out[key], obj[key]) : obj[key];
}
}
return out;
}
第out = out || {};
行是什么意思,它是如何运作的?
此功能基本上将不同的对象组合成一个对象。
答案 0 :(得分:0)
这基本上是做这个的简写
if(!out){
out = {};
}
基本上如果out不评估为'true',那么在这种情况下out将被设置为空数组。
答案 1 :(得分:0)
它设置out
的默认值,即如果未向函数提供out,(或者它是一个虚假值,例如false
,0
,{{1} },null
或undefined
),然后分配''
。
工作原理:
Javascript使用short circuit evaluation,这意味着或({}
)运算符将返回第一个非虚假值。如果||
不是假的,则没有任何变化,如果输出是假的,则设置为out
。
答案 2 :(得分:0)
这是一个简化形式:
}
答案 3 :(得分:0)
out = out || {};
如果在此行之前未设置变量“out”,则该值将设置为空数组。 JavaScript OR (||) variable assignment explanation
答案 4 :(得分:0)
在Javascript中,||
运算符返回第一个操作数(如果它是真值);否则,它返回第二个。因此,在此处的上下文中,如果out
是虚假值(例如undefined
),则out = out || {}
会将{}
分配给out
;否则,它会将out
的当前值分配到out
,这实际上什么都不做。
目的是为out
提供默认值。如果调用者将false
,null
或undefined
作为第一个参数传递,则out
将成为新对象。如果调用者将对象作为第一个参数传递,则该函数将修改该对象。