javascript - 值变量作为 0 不等于简写 if 表达式中的 false

标签 javascript if-statement shorthand shorthand-if

我用这两种方式调用函数

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] 未定义

我想知道是否有办法让 0 不像 if(pos.x===0){/的普通方法一样被评估为 false *...*/}

最佳答案

您需要检查 pos.x 是否存在,而不是检查它的值。您可以使用 hasOwnProperty 来执行此操作功能:

var x = pos.hasOwnProperty('x') ? pos.x : pos[0];

关于javascript - 值变量作为 0 不等于简写 if 表达式中的 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693531/

相关文章:

javascript - 空格/注释会减慢 Javascript 的速度吗?

ios - 如何使数组包含一个PDF文件

shorthand - "nit"在黑客用语中是什么意思?

typescript - Typescript 类/接口(interface)定义是否有更好的简写形式?

javascript - 这些线路代码相同吗?

javascript - 当我尝试将表单设置为干净时,脏表单给出错误

javascript - Fabric.js Draw_grid 无法读取未定义的属性 'moveTo'

php - PHP 中的另一个简单的 "if-else"表单?

javascript - 使用 Javascript 跟踪 HTML 元素的显示变化

c# - 如何声明一个 If 来验证一个类是否具有特定属性?