JavaScriptの中の二つの感嘆符の役割説明

1032 ワード

まず簡単な例で説明します.
 
  
var o={flag:true};
var test=!!o.flag;// var test=o.flag||false;
alert(test);
nullとundefinedに使うので!操作時にtrueの結果が発生するので、二つの感嘆符の役割は、oの中のflagsの値(null/undefined/0'/等値ではない)を明確に設定したら、自然testはo.flagsと同じ値を取ることにあります.設定していない場合、testはnullまたはundefinedではなくfalseとしてデフォルトになります.
jQueryで古典的な例は以下の通りです.(jQuery 1.7.0.js:Line 748)
 
  
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;
}
grep関数を使用する場合、3番目のパラメータが与えられ、null/undefined/0'/等値でない場合、invはtrueであり、そうでなければfalseである.このようにする目的は、invとretValの値がtrue/falseでしか取れないことを保証し、他の値ではなく、後の判断に便利を提供することです.