1、逻辑非(!)操作符的作用
(逻辑非)如果操作数能够转换为true,则返回false;否则返回为true。(即取反的意思)
2、双叹号(!!)的作用
双重否定即肯定
!! --- 一般用来将后面的表达式强制转换为布尔值类型的数据(boolean),返回值为true或者false;
3、!! 的使用意义
1、应用场景:判断一个对象是否存在
假设有这样一个json对象:
{ color: "#E3E3E3", "font-weight": "bold" }
//如果仅仅打印对象,无法判断是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(temp);
//结果:[object: Object]
//如果对json对象实施!!,就可以判断该json对象是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(!!temp);
//结果:true
2、通过!或!!把各种类型转换成bool类型的惯例
2.1、对null的"非"返回true
//1、
var temp = null;
console.log(temp);
//结果:null
//2、
var temp = null;
console.log(!temp);
//结果:true
//3\
var temp = null;
console.log(!!temp);
//结果:false
2.2、对undefined的"非"返回true
//1、
var temp;
console.log(temp);
结果:undefined
//2、
var temp;
console.log(!temp);
结果:true
//3\
var temp;
console.log(!!temp);
//结果:false
2.3、对空字符串的"非"返回true
//1、
var temp="";
console.log(temp);
//结果:空
//2、
var temp="";
console.log(!temp);
//结果:true
//3\
var temp="";
console.log(!!temp);
//结果:false
2.4、对非零整型的"非"返回false
//1、
var temp=1;
console.log(temp);
//结果:1
//2、
var temp=1;
console.log(!temp);
//结果:false
//3\
var temp=1;
console.log(!!temp);
//结果:true
2.5、对0的"非"返回true
//1、
var temp = 0;
console.log(temp);
//结果:0
//2、
var temp = 0;
console.log(!temp);
//结果:true
//3\
var temp = 0;
console.log(!!temp);
//结果:false
2.6、对字符串的"非"返回false
var temp="ab";
console.log(temp);
//结果:ab
//2、
var temp="ab";
console.log(!temp);
//结果:false
//3\
var temp="ab";
console.log(!!temp);
//结果:true
2.7、对数组的"非"返回false
//1、
var temp=[1,2];
console.log(temp);
//结果:1,2
//2、
var temp=[1,2];
console.log(!temp);
//结果:false
//3\
var temp=[1,2];
console.log(!!temp);
//结果:true