众所周知,! 表示“非”的意思。
在javascript中,!! 的意思是两次取“非”。
先看示例,这样做的好处随后再表。
1)a为空字符串。
var a = "";
var b = !!a;
//!a = true;
//b = false;
2)a的值是undefined。
var a;
var b = !!a;
//!a = true;
//b = false;
3)a的值是null。
var a = null;
var b = !!a;
//!a = true;
//b = false;
4)a的值是0。
var a = 0;
var b = !!a;
//!a = true;
//b = false;
在javascript中,当一个变量的值是(null/undefined/""/0)时,它的非的值是true。
两次取非可以达到将紧随其后的表达式强制转换为相应的布尔类型。
因此,对于没有明确值的变量,对其两次取非后结果为false。
注意:
一定要对空字符串和字符串是空格加以区别。
当变量a的值是"",也就是空字符串时,!!a的值是false;
当变量a的值是" ",也就是空格(引号里是空格)的情况下,!!a的值是true。