x ? y:z 与 x && y 使用区别

注意到一个日常使用三目运算符和&&运算符使用区别

 

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执行表达式的时候,使用与或运算符。

 
posted @ 2020-02-21 22:22  hh9515  阅读(674)  评论(0编辑  收藏  举报