先来看一个关于逻辑或的例子:var b = 0var a = b++ || b++console.log(b) // 2var c = ++b || ++bconsole.log(a) // 1console.log(c) // 3console.log(b) // 3关于 ++b和b++的区别,后++的运算等级没有赋值运算符(=)高, 这里不再作过多的解释,首先从全局来看,关于的b的运算总共执行了4次,每次都自身+1,那么按道理来说,如果这些运算都执行了,b的最后的值正常来说应该是4,那为什么最后的结果是3呢?关于逻辑或我自己总结如下:①、首先如果第一项的值不是Boolean值的话,会转为Boolean类型的,在数值上,0和-0在转为Boolean时为false,其余为true,在其他值上诸如null,undefined,NaN,空string类型等会转为false,这里不再作过多的解释console.log(Boolean(NaN))               // falseconsole.log(Boolean(null))                // falseconsole.log(Boolean(undefined))      // falseconsole.log(Boolean(’’))                    // falseconsole.log(Boolean(’ 0’))                 // true②、如果第一项的值为true时,则后面一项则不执行,返回的是第一项执行运算后的值网上看到的是说如贵第一项为true,返回的也是true,这是不对的说法。③、如果第一项的值为false时,则执行后面一项的运算,返回的是第二项执行运算后的值再来看多一个例子,自己多动手尝试看看就明白了。var b = 0var a = (typeof b++) || b++console.log(b) //1 var c = ++b || ++bconsole.log(a) // number console.log(c) // 2 console.log(b) // 2 ————————–     来个分割线      ———————————-看一个关于逻辑与的例子var b = 0var a = (typeof b++) && b++ console.log(b) // 2var c = ++b && ++bconsole.log(a) // 1console.log(c) // 4console.log(b) // 4关于逻辑与我自己总结如下:①、逻辑与和逻辑或一样,都需要把前后两项进行Boolean转换再比较②、如果第一项的值为true时,则执行后面一项的运算,返回的是第二项执行运算后的值③、如果第一项的值为false时,则后面一项则不执行,返回的是第一项执行运算后的值