Javascript 变量等于A | | B。这是如何工作的?

Javascript 变量等于A | | B。这是如何工作的?,javascript,Javascript,我遇到了以下代码: 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))

我遇到了以下代码:

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=out |{};
for(var i=1;i
这行代码是什么平均值及其工作原理


此函数基本上将不同的对象组合成一个对象。

基本上就是这样做的简捷方法

if(!out){
    out = {};
}
本质上,如果out的计算结果不是“true”,那么在这种情况下out将被设置为空数组


这里已经回答过:

它为
out
设置了一个默认值,即如果函数没有提供out(或者它是一个错误的值,例如
false
0
null
未定义的
'
),那么out被分配
{/code>

工作原理:
Javascript使用,这意味着or(
|
)操作符将返回第一个非伪值。如果
out
不是falsy,则不会发生任何变化,如果out是falsy,则将其设置为
{}

,这是一种简化形式:

function extend(out){
    if (!out) {
        out = {};
    }
    ...
}

如果在此行之前未设置变量“out”,则该值将设置为空数组

在Javascript中,
|
运算符返回第一个操作数(如果它是真值);否则,它将返回第二个。因此在这里的上下文中,如果
out
是一个错误的值(例如
未定义的
),那么
out=out | |{}
{}
分配给
out
;否则,它会将
out
的当前值分配到
out
,实际上什么也不做


其目的是为
out
提供默认值。如果调用方将
false
null
undefined
作为第一个参数传递,则
out
将是一个新对象。如果调用方将一个对象作为第一个参数传递,那么函数将修改该对象。

这个问题以前有人问过!你能提供一个链接吗?这正是你的问题!这是一个空对象,不是数组。对不起,你说得对,我整个星期都在C#工作。
out = out || {};