js逻辑非同时两次使用 !!null

今天遇到了“!!null”的写法,百度没有找到直接的解释,翻书在《javascript高级设计》P44找到了相应的解释:

同时使用两个逻辑非操作符,实际上就会模拟Boolean()转型函数的行为。其中,第一个逻辑非操作符会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。当然最终结果与对这个值使用Boolean()函数效果相同。

所以其实个人认为,!!写法就是Boolean()的一种简便写法。

可以运行下面示例来更形象的了解:

alert(!!"blue");
alert(Boolean("blue"));

alert(!!null);
alert(Boolean(null));

  

如有错误,请您指出~

时间: 2024-10-29 19:50:22

js逻辑非同时两次使用 !!null的相关文章

javascript使用两个逻辑非运算符(!!)的原因

javascript使用两个逻辑非运算符(!!)的原因:关于逻辑非运算符的使用这里就不用说了,比较简单,如果不了解可以参阅javascript的逻辑运算符一章节.在有些代码中可能大家可能会注意到有些地方使用了两个逻辑非运算符,第一感觉就是没有必要,比如操作数是true的话,使用两个逻辑非的返回值还是true,好像多此一举的行为,其实如果深究起来并非如此.先看一段代码实例: grep:function(elems,callback,inv ) { var ret=[],retVal; inv=!!

逻辑非!

逻辑非运算符可以用于任何值.无论这个值是什么数据类型,这个运算符都会返回一个boolean. 它的流程是:先将这个值转换成boolean,然后取反,规则如下: 1.操作数是一个对象,返回false: var box =!{}; alert(box);//false 2.操作数是一个空字符串,返回true: var box =!''; alert(box);//true 3.操作数是一个非空字符串,返回false var box =!'lx'; alert(box);//false 4.操作数是数

JS 逻辑

JS 逻辑 Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). Boolean 对象 您可以将 Boolean 对象理解为一个产生逻辑值的对象包装器. Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false). 创建 Boolean 对象 使用关键词 new 来定义 Boolean 对象.下面的代码定义了一个名为 myBoolean 的逻辑对象: var myBoolean=new Boolean() 注释:如果逻辑对象无初始值或者其值

布尔操作符-逻辑非(!)

逻辑非(!) 逻辑非操作符由一个叹号(!)表示. 无论这个值是什么数据类型,这个操作符都会返回一个布尔值.逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再将其求反.逻辑非操作符遵循下列规则: •如果操作数是一个对象,返回false: •如果操作数是一个空字符串,返回true: •如果操作数是一个非空字符串,则返回false: •如果操作数是数值0,返回true: •如果操作数是任意非0数值(包括Infinity),返回false: •如果操作数是null,返回true: •如果操作数是Na

js实现浮点数保留两位小数代码

js实现浮点数保留两位小数代码:过浮点数小数点后面的数字太长的话,可能需要进行截取操作,下面是一段这样的实例代码和大家分享一下.代码如下: var num=3.1415926; console.log(num.toFixed(2)) 以上代码比较简单,这里就多介绍了,具体可以参阅javascript的Number对象的toFixed()方法一章节. 原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=11735 更多内容可以参阅:h

js实现的计算两个时间之间的时间差

js实现的计算两个时间之间的时间差:在实际应用中,需要计算两个时间点之间的差距,一般来说都是计算当前时间和一个指定时间点之间的差距,并且有时候需要精确到天.小时.分钟和秒,下面就简单介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.

Angular JS将数据显示为两列(html)

(数据为Array数组)使用AngularJS中ng-show="{{}}",其将数据按行分为奇数行和偶数行,$even是判断是否为奇数行[如果是则为true,不是则为false],$odd判断是否为偶数行,ng-show="{{$even/$odd}}".根据读取数据的需要对需要隐藏的数据进行隐藏和显示. 在写js将数据分为两列时使用for循环取数据进行判断. 1 var oL = document.getElementById('L'); 2 var oR =

Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法

Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法 1.spreadOutApp尽量平均分配到每个executor上: 2.非spreadOutApp尽量在使用单个executor的资源. 源码分析 org.apache.spark.deploy.master.Master 1.首先判断,master状态不是ALIVE的话,直接返回2.调度driver3. Application的调度机制(核心之核心,重中之重) 源码如下: 1 /*

shell中逻辑与的两种表示方法

bash中表示逻辑与的两种方法: (1)[ $state == "running" -a $name == "zone1" ] (2)[[ $state == "running" && $name == "zone1" ]] ksh中支持第二种. 实例: #! /bin/bash read -p "pelease input your name:" name read -p "pl