shorthand-if 表达式中的值变量为 0 而不是 false
Value variable as 0 not as false in shorthand-if expression
我正在用这两种方式调用函数
foo([x,y])
或 foo({x:x,y:y})
与 x,y ∈ [0,∞)
foo 函数如下所示
var x = pos.x || pos[0],
y = pos.y || pos[1];
如果我用 x=0
以第二种方式调用该函数,那么 pos.x
将被评估为 false,这使得 x=pos[0]
即 undefined
.
我想知道是否有办法 0
不被评估为 false
就像在普通方法中 if(pos.x===0){/*...*/}
您需要检查 pos.x
是否存在,而不是检查它的值。您可以使用 hasOwnProperty
函数执行此操作:
var x = pos.hasOwnProperty('x') ? pos.x : pos[0];
这样做就可以了:
var x = pos.x || pos[0] || 0,
y = pos.y || pos[1] || 0;
该解决方案防止虚假值和 returns 0 作为默认值。阅读更多 here 关于逻辑运算符的内容。
我正在用这两种方式调用函数
foo([x,y])
或 foo({x:x,y:y})
与 x,y ∈ [0,∞)
foo 函数如下所示
var x = pos.x || pos[0],
y = pos.y || pos[1];
如果我用 x=0
以第二种方式调用该函数,那么 pos.x
将被评估为 false,这使得 x=pos[0]
即 undefined
.
我想知道是否有办法 0
不被评估为 false
就像在普通方法中 if(pos.x===0){/*...*/}
您需要检查 pos.x
是否存在,而不是检查它的值。您可以使用 hasOwnProperty
函数执行此操作:
var x = pos.hasOwnProperty('x') ? pos.x : pos[0];
这样做就可以了:
var x = pos.x || pos[0] || 0,
y = pos.y || pos[1] || 0;
该解决方案防止虚假值和 returns 0 作为默认值。阅读更多 here 关于逻辑运算符的内容。