JavaScript 具有非布尔值的逻辑运算符(布尔强制)
示例
||从左到右读取的逻辑OR()将求值为第一个真实值。如果未找到真实值,则返回最后一个值。
var a = 'hello' || ''; //一个='你好' var b = '' || []; //b=[] var c = '' || undefined; //c=未定义 var d = 1 || 5; //d=1 var e = 0 || {}; //e={} var f = 0 || '' || 5; //f=5 var g = '' || 'yay' || 'boo'; //g='是'
&&从左至右读取逻辑AND(),将得出第一个虚假值。如果未找到错误值,则返回最后一个值。
var a = 'hello' && ''; //一个='' var b = '' && []; //b='' var c = undefined && 0; //c=未定义 var d = 1 && 5; //d=5 var e = 0 && {}; //e=0 var f = 'hi' && [] && 'done'; //f='完成' var g = 'bye' && undefined && 'adios'; //g=未定义
例如,可以使用此技巧来为函数参数设置默认值(ES6之前)。
var foo = function(val) { //如果val计算为falsey,则将返回“默认值”。 return val || 'default'; } console.log( foo('burger') ); //汉堡包 console.log( foo(100) ); //100 console.log( foo([]) ); //[] console.log( foo(0) ); //默认 console.log( foo(undefined) ); //默认
请记住,对于参数,0以及(在较小程度上)空字符串通常也是有效的值,应该可以将其显式传递并覆盖默认值,在这种模式下,它们将不会(因为它们是虚假)。