允许为零

短路评估确定第一个值是否有误。 如果是,则返回第二个值,如下所示:

var x = y || z; // if y is falsey return z

如果不使用if / else语句或三元运算符进行短路评估,有没有办法忽略零值为假的?


您可以将您的号码包裹到一个Number对象中并检查;

var x = new Number(0) || console.log("never gets printed");
console.log(parseInt(x));
//or
console.log(x.valueOf());

编辑:

如果z是一个数字,你可以使用这样的技巧:

var x1 = Number(y===0 && '0' || y || z)
// or
var x2 = (y===0 && '0' || y || z)-0

var z = -1;

var y = 42;
var x = y || z;
var x1 = Number(y===0 && '0' || y || z)
var x2 = (y===0 && '0' || y || z)-0
console.log('x:',x, '  x1:',x1, '  x2:',x2);

var y = 0;
var x = y || z;
var x1 = Number(y===0 && '0' || y || z)
var x2 = (y===0 && '0' || y || z)-0
console.log('x:',x, '  x1:',x1, '  x2:',x2);

var y = null;
var x = y || z;
var x1 = Number(y===0 && '0' || y || z)
var x2 = (y===0 && '0' || y || z)-0
console.log('x:',x, '  x1:',x1, '  x2:',x2);

编辑:这使用三元运算符,所以如果这不是你想要的,不要使用它。

当然,这是另一个简单的方法:

var x = y || y==0?0:z;

如果y为真,则x设为y

如果y是虚假的,并且y==0 ,则x被设置为0

如果y是falsy,并且y!=0 ,那么x被设置为z ;

链接地址: http://www.djcxy.com/p/40253.html

上一篇: Allow for zero

下一篇: Is the pImpl idiom really used in practice?