天天看點

javascript中兩個感歎号的作用

最近在在看Javascript代碼時,會經常看到代碼中使用雙感歎的用法,如

var a = !!result.flag;      

 開始的時候,不怎麼明白為什麼一定要這麼做?後來想想,應該是在下文中要對a進行判斷。那麼,有人可能會問,即使用不用又感歎号,也能正常的判斷啊。的确如此,但我想,經過雙感歎号之後,a的值就變成了一個boolean值了,這樣會讓判斷語句看上去更直覺吧。

因為大家都知道,js是一個弱類型語言,在JS中使用如下語句判斷時:

if(!a) {
    alert("a ia not true");
}      

 當a的值為null/undefined/0/NaN/""(空字元串)時,上面的if條件都是成立的,進而都會彈出“a ia not true”;但是從語義來上看的話,可能并不能麼好了解。明明a是null或者undefined,可為什麼彈出的消息卻是“a ia not true”。為了避免這種了解上的差異,就可以使用雙感歎号了。

也就是說,雙感歎号其實是簡單的,沒什麼玄乎的,下面的代碼可以說明這一點:

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<script>
	var a = {a:112};
	var b = a.b;
	var c = !a.b;
	var d = !!a.b;
	
	var e = a.a;
	var f = !a.a;
	var g = !!a.a;

</script>
</head>
<body>
</body>
</html>      

 debug截圖(注意看右邊的 watch expressions哦):

javascript中兩個感歎号的作用

繼續閱讀