你不知道的 &&

257 阅读1分钟

昨天同事问我一个问题:

let a = {
    b: {
      c:1
    }
}

a && a.b &&a.b.c是多少我说是1。为啥是1呢?我当时给她的解释为&&取交集这个三个元素的交集为最后一个啊???感觉解释是如此的有道理!!!后来发现我的解释是错误的!!!!!

我试着输出a &&a.b.c&&a.b 结果不是我想的那样。。。。结果是{c: 1}

I am wrong !!!

于是我网上搜了一波,总结如下:

ele1 && ele2 && ele3在进行与运算前先对每一项进行布尔运算 ,如果每一项都是true那么结果为最后一个元素!!

ele1 && ele2 && ele3在进行与运算前先对每一项进行布尔运算, 如果存在一项是false那么结果为false的那一项

由此那么|| 或运算的规则是:

ele1 && ele2 && ele3在进行或(||)运算前先对每一项进行布尔运算 ,如果每一项都是false那么结果为最后一个元素!!

ele1 && ele2 && ele3在进行或(||)运算前先对每一项进行布尔运算, 如果存在一项是true那么结果为true的那一项!!

来上栗子:a.b.c&&a.b&&a结果为{b:{c:1}}

null&&33结果为 null

null || 3333 结果为3333

null || undefined 结果为undefined


理解甚浅,还望大神补充~~~~~