js中"!"!!"分别是什么意思
js代码中有时会用到“!”,这个意为取反,对于布尔类型会将其值true和false互换。
对于非布尔类型,js会将值先转换为布尔类型,而后取反。
“!”的意思
“!”可将变量转换为Boolean类型,null,undefined和空字符串取反都为true,
其他为false
其他类型转布尔类型的规则:
字符串类型值:将空值(“”)转换为false,其他转换为true
数字类型:会将0转换为false,其他转换为true
null,undefined会转换为false
代码示例
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
总结:
对于null类型,undefined,0,“”都会转换为false
“!”是将对象转为布尔类型并取反
“!!”是将取反后的布尔值再取反,相当于直接将非布尔类型值转为布尔类型值。