EDIT:
If z is a number, you can use a trick like this:
var x1 = Number(y===0 && '0' || y || z)
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);
Original answer:
Maybe a simple way might work (3 equivalents)
var x = (y === 0) ? 0 : (y || z); var x = (!y && y!==0) ? z : y;
var z = 'Was falsey'; var y = 42; var x = y || z; var x1 = (y === 0) ? 0 : (y || z); var x2 = (!y && y!==0) ? z : y; console.log('x:',x, 'x1:',x1, 'x2:',x2); var y = 0; var x = y || z; var x1 = (y === 0) ? 0 : (y || z); var x2 = (!y && y!==0) ? z : y; console.log('x:',x, 'x1:',x1, 'x2:',x2); var y = null; var x = y || z; var x1 = (y === 0) ? 0 : (y || z); var x2 = (!y && y!==0) ? z : y; console.log('x:',x, 'x1:',x1, 'x2:',x2);
Natgs
source share