JavaScript中两个叹号的作用
在一些JavaScript代码中,经常能看到两个单号(!!)这样的写法,比如如下jQuery源码中grep方法:
grep: function(elems, callback, inv) {
var ret = [],
retVal;
inv = !! inv;
// Go through the array, only saving the items
// that pass the validator function
for (var i = 0, length = elems.length; i < length; i++) {
retVal = !! callback(elems[i], i);
if (inv !== retVal) {
ret.push(elems[i]);
}
}
return ret;
}
那么两个叹号的作用是什么呢?我将上面的的代码改写成这样:
inv = ! ( ! inv ) ;
如果inv是undefinded,那么! inv就会变成true,再加一个叹号,就会变成false。
所以两个叹号的作用就是明确inv只能在ture或false中取值,即将inv转化为布尔类型。
因为在JavaScript中, | 或&&操作符并不是简单的返回true或false,所以将参与运算的值转化为布尔值,也为以后判断提供便利。 |