Javascript中!!(感嘆符2つ、感嘆符2つ)の意味

5117 ワード

JavaScriptタイプ変換


JavaScriptは弱いタイプの言語であることは知っていますが、使用中に強制的に対応するタイプに変換する必要がある場合があります.ここで、タイプ変換については、明示的変換と暗黙的変換の2つの概念を提示しなければならない.
明示的な変換:
const a = parseInt(1111111111111); 
const b = Obj.toString();

暗黙的な変換:
var a = '111'+0;//a       ;
var b = 111+'';//b         ;

例えば:aデフォルトはundefinedです!aはtrueだ!!!aはfalseであるため、bの値はundefinedではなくfalseである.このように書くと、後続の判断に便利になります.
だから、!(a)の役割は,aをブール型(boolean)に強制的に変換することである.

js 1つ2つ3つの感嘆符の違い


1、感嘆符一つ
!変数をbooleanタイプに変換できます.null、undefined、空の文字列の反転はfalseで、残りはtrueです.
!null=true
!undefined=true
!''=true
!100=false
!'abc'=false

2、感嘆符2つ!!タイプ判断によく使われます.
  • undefinedおよびnullはfalseである.
  • 任意の配列、オブジェクト、関数(関数は特殊なオブジェクト)はtrueに変換され、空の配列でも空のオブジェクトに変換されます.
  • はfalse、 はtrueである.
  • 0、不確定値(NaN)false、その他true、 もtrueです.

  • 文字列”0″と数値0は互いに変換できますが、0は「0」に変換でき、「0」はtrueに変換できますが、0はfalseに変換され、Javascriptのタイプ変換が伝達されていないことがわかります.

    Javascript中!!(感嘆符2つ、感嘆符2つ)何に使えますか?


    いくつかの変数の値を判断するために使用できます!値が真の場合は、まずundefinednullを除外することができ、対象タイプに応じて、以下のように判断することができる.
  • 数値:0ではないことを示し、無限大を含む決定的な意味を持つ値
  • 文字列:長さが0より大きいことを示す文字列
  • 配列、オブジェクト、関数:undefinedまたはnullではないことを示すだけで、要素と内容があるかどうかを判断することはできません.

  • また、次の2つの使い方は完全に等価です.
    	let a; // null、undefined、''、0
        if (a !== null && typeof(a) !== "undefined" && 
            a !== undefined && a !== '' && a !== 0){
              //a truthy    ,   a       
           }
    
    	let a;
    	if(!!a){
    	//a truthy    ,   a       
    	}
    

    3、感嘆符3つ
    3つの感嘆符は意味がなく、1つの感嘆符の効果と同じです.一般的に彼らは!!1つの変数をboolean型に変換し、もう1つ追加することを示します.boolean型に対して反逆し、!falseまたは!trueと同じです.
    転載:https://blog.csdn.net/tantanit/article/details/52287700 https://blog.csdn.net/lx_1024/article/details/79807228