!! Biasanya digunakan untuk memaksa ungkapan berikut kepada data jenis Boolean (boolean), iaitu, ia hanya boleh menjadi benar atau palsu;
Saya sering melihat contoh seperti ini:
var a;
var b=!!a;
a lalai kepada undefined. !a adalah benar, !!a adalah palsu, jadi nilai b adalah palsu, bukan nilai yang tidak ditentukan atau nilai lain, terutamanya untuk memudahkan penghakiman seterusnya.
!! Biasanya digunakan untuk memaksa ungkapan berikut kepada data jenis Boolean (boolean), iaitu, ia hanya boleh menjadi benar atau palsu;
Oleh kerana JavaScript ialah bahasa yang ditaip lemah (pembolehubah tidak mempunyai jenis data tetap), kadangkala perlu menghantarnya ke jenis yang sepadan, serupa dengan:
a=parseInt(“1234″)
a=”1234″-0 //转换为数字
b=1234+”” //转换为字符串
c=someObject.toString() //将对象转换为字符串
Salin selepas log masuk
Jenis 1 dan 4 ialah penukaran eksplisit dan jenis 2 dan 3 ialah penukaran tersirat
Penukaran Boolean, konvensyen JavaScript ialah
false, undefined, null, 0, "" is false
true, 1, "somestring", [Object] is true
Untuk nilai lain yang ditukar secara tersirat seperti null dan undefined, menggunakan operator ! akan menghasilkan hasil yang benar, jadi tujuan menggunakan dua tanda seru adalah untuk menukar nilai ini kepada nilai Boolean "setara". >
Mari kita lihat semula:
Contoh ini menunjukkan bahawa apabila undiffed dan null digunakan, menggunakan satu tanda seru mengembalikan benar, dan menggunakan dua tanda seru mengembalikan palsu Oleh itu, peranan dua tanda seru ialah jika nilai pembolehubah ditetapkan secara eksplisit ( Bukan -null/unified/0/"" dan nilai lain), hasilnya akan dikembalikan berdasarkan nilai sebenar pembolehubah Jika ia tidak ditetapkan, hasilnya akan kembali palsu.
var foo;
alert(!foo);//undifined情况下,一个感叹号返回的是true;
alert(!goo);//null情况下,一个感叹号返回的也是true;
var o={flag:true};
var test=!!o.flag;//等效于var test=o.flag||false;
alert(test);
Salin selepas log masuk