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哦):



 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值