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

时间:2017-02-22 02:47:35

标签: 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))
                out[key] = (typeof obj[key] === 'object') ? extend(out[key], obj[key]) : obj[key];
        }
    }
    return out;
}

out = out || {};行是什么意思,它是如何运作的?

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

5 个答案:

答案 0 :(得分:0)

这基本上是做这个的简写

if(!out){
    out = {};
}

基本上如果out不评估为'true',那么在这种情况下out将被设置为空数组。

此处已经回答:What does the construct x = x || y mean?

答案 1 :(得分:0)

它设置out的默认值,即如果未向函数提供out,(或者它是一个虚假值,例如false0,{{1} },nullundefined),然后分配''

工作原理: 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提供默认值。如果调用者将falsenullundefined作为第一个参数传递,则out将成为新对象。如果调用者将对象作为第一个参数传递,则该函数将修改该对象。