ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript における 2 つの感嘆符の役割

JavaScript における 2 つの感嘆符の役割

高洛峰
高洛峰オリジナル
2016-11-28 10:49:131577ブラウズ

var a;

var b=!!a;

a のデフォルトは未定義です。 !a は true、!!a は false であるため、b の値は、主にその後の判断を容易にするために、未定義または他の値ではなく false になります。

!! 一般に、次の式を true または false のみにできるブール型データ (boolean) にするために使用されます。

JavaScript は弱い型指定の言語であるため (変数には固定のデータ型がありません)、必要な場合もあります。次のように、対応する型にキャストします:

a=parseInt(“1234″)

a=”1234″-0 //数値に変換

b=1234+”” //文字 String に変換

c=someObject.toString() // オブジェクトを文字列に変換します

1 番目と 4 番目は明示的な変換、2 と 3 は暗黙的な変換です

ブール型変換、JavaScript の規約ルール

false、未定義、null、0、 "" の場合は false

tru​​e、1、"somestring"、[Object] の場合は

null、未定義、および暗黙的に変換されるその他の値の場合、! 演算子を使用すると true の結果が生成されるため、使用の目的は2 つの感嘆符は、これらの値を「同等の」ブール値に変換します

===================== ========= ================================================= ==============================

まずは簡単な例で説明しましょう:
var o={flag:true};
var test=!!o.flag;//var test=o.flag||false;
alert(test);
! 演算子は null と unknown に使用されるため、true の結果が生成されます。 2 つの感嘆符を使用することは、o の flag の値が明示的に設定されている場合 (null/unknown/0""/ などではない)、当然、test は o.flag と同じになります。値が設定されていない場合、test は同じになります。デフォルトは false であり、null または未定義ではありません。
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/unknown/0""/ ではない場合、inv は true、それ以外の場合は false です。この目的は、後の判断を容易にするために、inv と retVal の値が他の値ではなく true/false からのみ取得できるようにすることです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。