为什么使用三元运算后面的判断是1?

image.png

有没有高手能解释一下运作的全思想呢?从来没有这样玩过的,读不懂是什么意思,三元运算以后又return cur,有点混乱现在

阅读 2.6k
2 个回答

看你的 obj 里没有 isd 属性,所以三元运算符的第一个表达式恒为 false,冒号前面的表达式,也就是空字符串 ''不会被执行。(有isd属性的情况应该不难推测)。

由于 && 运算符的优先级高于 =,所以冒号后面的内容相当于:

    obj[next.id] = true && cur.push(next);

另外,鉴于 true && exp 恒等于后面的表达式 exp,冒号后面的内容可以进一步简化为:

obj[next.id] = cur.push(next);

push函数会返回数组长度,第一次 push 之后这个长度为1,那么 obj[next.id] 的值就是 1 了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题