!!一般に、次の式をブールデータ(ブール)にキャストするために使用されます。つまり、真または偽のみである可能性があります。
私はこのような例をよく見ます:
コードコピーは次のとおりです。
var a;
var b = !! a;
Aはデフォルトでは未定義です。 !aは本当です、!! aはfalseなので、bの値は偽で、未定義でもなく、他の値も、主にその後の判断に利便性を提供します。
!!一般に、次の式をブールデータ(ブール)にキャストするために使用されます。つまり、真または偽のみである可能性があります。
JavaScriptは弱い型言語であるため(変数には固定データ型がありません)、次のような対応するタイプにキャストする必要がある場合があります。
a = parseint( "1234")a = "1234" -0 //番号b = 1234+"に変換" // string c = someobject.tostring()//オブジェクトを文字列に変換する
その中で、最初と4番目は明示的な変換であり、2と3は暗黙的な変換です
ブール変換、JavaScriptコンベンションルールはそうです
false、未定義、null、0、 ""はfalseです
確かに、1、「SomeString」、[オブジェクト]は真です
nullや未定義など、暗黙的に変換された他の値については、!オペレーターは真の結果を生成するため、2つの感嘆符を使用する目的は、これらの値を「同等の」ブール値に変換することです。
もう一度見てみましょう:
var foo; alert(!foo); // diginedined、感嘆符はtrueを返します。アラート(!goo); // nullで、感嘆符がtrueを返します。 var o = {flag:true}; var test = !! o.flag; // var test = o.flag || false;アラート(テスト);この例は、定義されていないヌルの場合、1つの感嘆符の返還が真であり、2つの感嘆符の返還が偽であるため、2つの感嘆符の関数は、変数の値が明確に設定されている場合(非null/0/"および「等価値)、結果は変動の実際の値に基づいて返されることを示しています。設定されていない場合、結果は返されます。