!!一般用来将后面的表达式转换为布尔型的数据(boolean) 因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型
代码如下:
let name = undefined;
let age = null;
console.log(name, age); // 结果为:undefined null
let name1 = !name; // 单个 ! 号代表转换为相反的布尔值。
console.log(name1); // 结果为:true
let name2 = !!name; // 两次转换,得到原本该有的布尔值。undefined —> false, null -> false, "" -> false, 0 -> false
console.log(name2); // 结果为:false
也可以说:
两次取反,得到布尔值。
当 this.searchObj
为真时,第一次取反 !this.searchObj
返回 false
,第二次取反 !!this.searchObj
返回 true
;
当 this.searchObj
为假时,第一次取反 !this.searchObj
返回 true
,第二次取反 !!this.searchObj
返回 false
if (!!this.searchObj) {
this.showLength = this.searchObj.searchArr.length;}