一个简单的项目需求,“显示出用户的性别”,有两个字段存储了用户性别,“性别”和“性别类型”,性别类型为1表示是“男”,2表示是“女”。
于是乎,我写出了如下的代码。
let result = 性别 || 性别类型 === 1 ? '男' : '女'
结果,性别是“女”的时候,“竟然”显示了“男”(不明真相的我其实还是挺惊讶的)。为此,我还写了一个小例子,反复打印,反复端详。还有点想不通呢。
let 性别类型 = 2 // 1表示男 2表示女
let 性别 = '女'
let result = 性别 || 性别类型 === 1 ? '男' : '女'
console.log(性别) // 女
console.log(性别类型 === 1 ? '男' : '女') // 女
console.log(result) // 男
我想当然的任务,条件运算符的优先级比逻辑或的优先级高。
查了一下MDN。
MDN截图如下:

咦,上面明明写着,逻辑或的优先级在条件运算符之上啊。
这下记住了,不然真的连男女都分不清了。
网友评论