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