JavaScript中!!()的作用
有两个概念:显式转换和隐式转换。
显式转换:
const a = parseInt('11111111111');
const b = Obj.toString();
隐式转换:
var a = '111'+0; // a的结果为数值型;
var b = 111+''; // b的结果为字符串类型;
javaScript中的 !! 的作用
js代码中有时会用到 ! 取反,对于布尔值类型会将值true和false切换,如果不是布尔值呢?
对于非布尔类型,js会将值先转换为布尔类型,然后才能取反
其它布尔类型:
字符串类型,会将值转换成true,只有空值(’ ')转换成false
数值类型,会将0转换成false,其余都为true
null,undefined会转换成false
一个!是将对象转为布尔型并取反,两个!是将取反后的布尔值再取反,相当于直接将非布尔类型值转为布尔类型值。
let name = !!" "
console.log(name) // false
let name2 = !!undefined
console.log(name2) // false
let name3 = !!'abcde'
console.log(name3) // true
let name2 = !'abc';
console.log(name2); // false