1、 !
将变量转换成boolean类型,null、undefined和空字符串取反都为true,其余都为false
!null = true
!undefined = true
!'' = true
!12345 = false
!'abcde' = false
2、 !!
!! 常常用来做类型判断。先通过!转换类型后(见!的使用) ,再做逻辑取反运算
var a
if(!!a){
//a有内容才执行的代码...
}
等价于=>
if(a!=null&&typeof(a)!=undefined&&a!=''){
//a有内容才执行的代码
}
3、?.
let a
let b
a = b.name // 报错
a = b?.name // 不会报错,a为undefined
等价于=>
if(!!b){
a = b.name
}else{
a = undefined
}
4、??
let a
let b = null
let c = 1
a = b ?? c //a 为 1
//当b除了undefined、或者null之外的任何值,a都会等于b,否则就等于c.
5、??=
??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量.其他所有值都不会进行赋值.
let a
let b = 1
let c = '你好'
let d = 'hello'
a ??= c // a 为 '你好'
b ??= d // b 为 1
6、==
用来判断是否相等,当比较的两个值数据类型不同时,先进行隐式再判断是否相等。
1=="1" //true
""==0 //true
null==undefined //true
[]==0 //true
{}=={} //false