# 背景
今天在写项目时,逻辑代码涉及到一个逻辑与和三元表达式一起用的一行代码,当组长说这么改时,我一直理解不了。
下面是示范代码,为了简化把变量都简化一下:
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。
# 总结
当逻辑与和三元表达式一起用的时候,会直接计算前面的逻辑关系,得到最后三元的结果值。