具有非布林值的邏輯運算子(布林強制)
從左到右閱讀的邏輯 OR(||
)將評估第一個真值。如果未找到 truthy 值,則返回最後一個值。
var a = 'hello' || ''; // a = 'hello'
var b = '' || []; // b = []
var c = '' || undefined; // c = undefined
var d = 1 || 5; // d = 1
var e = 0 || {}; // e = {}
var f = 0 || '' || 5; // f = 5
var g = '' || 'yay' || 'boo'; // g = 'yay'
從左到右閱讀的邏輯 AND(&&
)將評估為第一個假值。如果未找到 falsey 值,則返回最後一個值。
var a = 'hello' && ''; // a = ''
var b = '' && []; // b = ''
var c = undefined && 0; // c = undefined
var d = 1 && 5; // d = 5
var e = 0 && {}; // e = 0
var f = 'hi' && [] && 'done'; // f = 'done'
var g = 'bye' && undefined && 'adios'; // g = undefined
例如,可以使用此技巧將預設值設定為函式引數(在 ES6 之前)。
var foo = function(val) {
// if val evaluates to falsey, 'default' will be returned instead.
return val || 'default';
}
console.log( foo('burger') ); // burger
console.log( foo(100) ); // 100
console.log( foo([]) ); // []
console.log( foo(0) ); // default
console.log( foo(undefined) ); // default
請記住,對於引數,0
和(在較小程度上)空字串也通常是有效值,應該能夠顯式傳遞並覆蓋預設值,使用此模式,它們不會(因為它們是假的。