逻辑与和三元表达式一起用的错误代码运行理解

# 背景

今天在写项目时,逻辑代码涉及到一个逻辑与和三元表达式一起用的一行代码,当组长说这么改时,我一直理解不了。

下面是示范代码,为了简化把变量都简化一下:

0 && 1? true: false
1

我一直错误地认为最好的输出结果会是0,但是组长一直说是false,使我百思不得其解。

# 探究

我通过F12打开浏览器控制台,准备验证一下,输入了下面一行代码:

0 && 1? true: false
1

控制台打印结果为false,我看了一会于是立马悟到,我之前理解的代码执行顺序一直是错误的,1? true: false看出了一个整体,认为js会先计算出这个三元表达式的值拿到false,再和0 && false这个短路运算符做计算。

其实正确的执行顺序是把0 && 1当作一个整体,直接执行为false,得到结果false。

# 总结

当逻辑与和三元表达式一起用的时候,会直接计算前面的逻辑关系,得到最后三元的结果值。