注意到一个日常使用三目运算符和&&运算符使用区别
A:let a = 1===1 ? 2 :undefined // 2
B:let b = 1===1 && 2 // 2
两个结果都是2
C:let a = 1===2 ? 2:undefined // undefined
D:let b = 1===2 && 2 // false
C的结果是undefined,D的结果是false
原因在于, 执行 && 运算符时, 如果左值为false, false && 任意值都为false,
在let b = 1===2 && 2中 左值为false,所以此时最终值为false, 如果左值为true,那么结果就是右值
结论:
所以,在给变量赋值时应使用三目运算符; 在单纯的evaluate执行表达式的时候,使用与或运算符。