在运算过程中,首先js 会将 && 和|| 两边的值转转成Boolean 类型,然后再算值,转换成boolean 的规则 是:对象、非零整数、非空字符串返回true,其它为false;
下面是我自己的一些总结。
逻辑与&& (遇到为假的项就返回该假项的值;全是真值返回后面的那一个真项的值)
- 逻辑与和逻辑或一样,都需要把前后两项进行Boolean转换再比较
- 如果第一项的值为true时,则执行后面一项的运算,返回的是第二项执行运算后的值
- 如果第一项的值为false时,则后面一项则不执行,返回的是第一项执行运算后的值
逻辑或|| (遇到为真的项就返回该真项的值;全是假值返回后面的那一个假项的值)
- 如果第一项的值为true时,则后面一项则不执行,返回的是第一项执行运算后的值
- 如果第一项的值为false时,则执行后面一项的运算练习,返回的是第二项执行运算后的值
console.log(1&&false) //false
console.log(null&&false)//null
console.log(8&&null)//null
console.log(9&&undefined)//undefined
console.log(undefined&&9)//undefined
console.log("abc"&&567)//567
console.log(0&&"")//0
console.log(1&&"abc")//"abc"
console.log(1||false)//1
console.log(0||"")//""
console.log(1||"abc")//1
console.log(undefined||9)//9
按照上面思路,这些题目都能算的又对又快