JS 中的逻辑运算符&&和||的区别 !和!!的区别及用法

一 &&和||的区别

1.&&

只要"&&"前面为false,无论"&&"后面是true还是false,都返回"&&"前面的值;
只要"&&"前面为true,无论"&&"后面是true还是false,都返回"&&"后面的值。
console.log(false && true)  //打印false
console.log(false && null)  //打印false

console.log(true && 1)  //打印1
console.log(true && false)  //打印false

"&&"可以理解为获取表达式中的第一个false值对象,如果没有false值对象,则返回最后一个对象。


妙用列子:
 if(a=true){
    console.log(a等于true)
  }
  可以写成:a && console.log(a等于true)

2.||

只要"||"前面为true,无论"||"后面是true还是false,都返回"||"前面的值;
只要"||"前面为false,无论"||"后面是true还是false,都返回"||"后面的值。
console.log(true || 1)  //打印true
console.log(true || 0)  //打印true

console.log(false || 1) //打印1
console.log(false || 0) //打印0

"||"可以理解为获取表达式中的第一个true值对象,如果没有true值对象,则返回最后一个对象。

3.JS中非bool对象的bool值

在JS的非bool对象中,只有null、undefined、""、NaN、0会被判定为false,其他的全部是true。
for (let i of [null, undefined, '', 0, NaN]) {
  console.log(!!i)  //全部打印false
}

二 !和!!的区别及用法

js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,
1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。

!null=true

!undefined=true

!''=true

!100=false

!'abc'=false

2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
判断变量a为非空未定义或者非空串才能执行方法体的内容

var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
    //a有内容才执行的代码  
}

实际上我们只需要写一个判断表达:

if(!!a){
    //a有内容才执行的代码...  
}

你可能感兴趣的:(JS 中的逻辑运算符&&和||的区别 !和!!的区别及用法)