1、邏輯非(!)操作符的作用
(邏輯非)如果操作數(shù)能夠轉(zhuǎn)換為true,則返回false;否則返回為true。(即取反的意思)
2、雙嘆號(hào)(!!)的作用
雙重否定即肯定
!! --- 一般用來將后面的表達(dá)式強(qiáng)制轉(zhuǎn)換為布爾值類型的數(shù)據(jù)(boolean),返回值為true或者false;
3、!! 的使用意義
1、應(yīng)用場(chǎng)景:判斷一個(gè)對(duì)象是否存在
假設(shè)有這樣一個(gè)json對(duì)象:
{ color: "#E3E3E3", "font-weight": "bold" }
//如果僅僅打印對(duì)象,無法判斷是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(temp);
//結(jié)果:[object: Object]
//如果對(duì)json對(duì)象實(shí)施!!,就可以判斷該json對(duì)象是否存在:
var temp = { color: "#A60000", "font-weight": "bold" };
alert(!!temp);
//結(jié)果:true
2、通過!或!!把各種類型轉(zhuǎn)換成bool類型的慣例
2.1、對(duì)null的"非"返回true
//1、
var temp = null;
console.log(temp);
//結(jié)果:null
//2、
var temp = null;
console.log(!temp);
//結(jié)果:true
//3\
var temp = null;
console.log(!!temp);
//結(jié)果:false
2.2、對(duì)undefined的"非"返回true
//1、
var temp;
console.log(temp);
結(jié)果:undefined
//2、
var temp;
console.log(!temp);
結(jié)果:true
//3\
var temp;
console.log(!!temp);
//結(jié)果:false
2.3、對(duì)空字符串的"非"返回true
//1、
var temp="";
console.log(temp);
//結(jié)果:空
//2、
var temp="";
console.log(!temp);
//結(jié)果:true
//3\
var temp="";
console.log(!!temp);
//結(jié)果:false
2.4、對(duì)非零整型的"非"返回false
//1、
var temp=1;
console.log(temp);
//結(jié)果:1
//2、
var temp=1;
console.log(!temp);
//結(jié)果:false
//3\
var temp=1;
console.log(!!temp);
//結(jié)果:true
2.5、對(duì)0的"非"返回true
//1、
var temp = 0;
console.log(temp);
//結(jié)果:0
//2、
var temp = 0;
console.log(!temp);
//結(jié)果:true
//3\
var temp = 0;
console.log(!!temp);
//結(jié)果:false
2.6、對(duì)字符串的"非"返回false
var temp="ab";
console.log(temp);
//結(jié)果:ab
//2、
var temp="ab";
console.log(!temp);
//結(jié)果:false
//3\
var temp="ab";
console.log(!!temp);
//結(jié)果:true
2.7、對(duì)數(shù)組的"非"返回false
//1、
var temp=[1,2];
console.log(temp);
//結(jié)果:1,2
//2、
var temp=[1,2];
console.log(!temp);
//結(jié)果:false
//3\
var temp=[1,2];
console.log(!!temp);
//結(jié)果:true