JS中双叹号!!的使用
我们都知道!
是逻辑运算符非,!true = false
,!false = true
,意为取反操作
那!!
是什么意思呢?下面来看一道题
(function () {
var a = 10;
var b = 20;
function add(num1, num2) {
var num1 = !!num1 ? num1 : a;
var num2 = !!num2 ? num2 : b;
return num1 + num2;
}
window.add = add;
})();
var sum=add("10", "20");
console.log(sum);
根据上面的转化规律来看var num1 = !!num1 ? num1 : a;
,如果num1
是undefined,null
,那么!num1
是true
,!!num1
是false
,所以如果num1
不是undifined和null
,则取参数的值num1
,否则取变量a
的值。
这里并不能判断num1
是否是数值,所以传入字符串string
也是可以计算的,计算结果是两个字符串相加"1020"
,如果传入的都是数值number
,则会把数值相加,结果是30
综上所述,!! 值
是将后面的值转换为Boolean
类型,进行 new Boolean(值)
操作,常用于判断一个值是否等于null和undefined
if(!!val){ }
等价于
if((val!=null)&&(val!=undifined)){}
除了0
、-0
、null
、""
、false
、undefined
或者 NaN
进行new Boolean()
转化为false,其他为true