簡単な例を使用して説明します。
var o={ flag:true};
var test=!!o.flag;// var test=o.flag||false; と同等
null と unknown に対して ! 演算子を使用すると true の結果が生成されるため、2 つの感嘆符を使用する目的は、o のフラグの値が明示的に設定されている場合 (null/unknown/0""/ などではない) であるためです。 )、自然なテスト o.flag と同じ値を取ります。設定されていない場合、テストはデフォルトで null または未定義ではなく false になります。
jQuery の典型的な例は次のとおりです: (jQuery 1.7.0.js: 748 行目)
grep: function(elems, callback, inv) {
var ret = [], retVal;
inv = !!inv; / 配列を調べて、検証関数
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/未定義/0""/ でない場合、inv は true になり、それ以外の場合は false になります。この目的は、後の判断を容易にするために、inv と retVal の値が他の値ではなく true/false からのみ取得できるようにすることです。