javascript中为什么有时候会使用双逻辑非运算符的?

目录(?)[+]

双逻辑非操作符的作用

双逻辑非操作,会把一个值(数字,字符串…..)转换为布尔值。第一次逻辑非操作取反的布尔,第二次获得最初元素本身对应的布尔。

alert(!!false);     //false

alert(!!"blue");    //true

alert(!!0);         //false

alert(!!NaN)        //false

alert(!!12345)     //true

双逻辑非操作符的优点

双逻辑非操作符提高了程序执行的效率,比先存储后访问的效果更好。

<HTML>
<HEAD>
	<script type="text/javascript">
		var res1 = (0 && undefined);     //0
		var res2 = !!(0 && undefined);   //false
		console.log("第一个"+res1);
		console.log("第二个"+res2);
	</script>
</HEAD>
<BODY></BODY>
</HTML>
/*
对于 res1 我们每次还需要隐式转换成布尔值,if(Boolean(res1)),而 res2 已经是布尔值,所以使用双逻辑非操作符提高了程序执行的效率。
这里说的先储存后的访问效果好,说的就是先储存布尔值。
*/

猜你喜欢

转载自blog.csdn.net/u014527697/article/details/79999702