Saya sering melihat contoh seperti ini:
Salinan kode adalah sebagai berikut:
var a;
var b = !! a;
A tidak terdefinisi secara default. ! A benar, !! a Salah, jadi nilai B adalah salah, tidak lagi tidak terdefinisi, atau nilai -nilai lain, yang terutama memberikan kenyamanan untuk penilaian berikutnya.
!! umumnya digunakan untuk memberikan ekspresi berikut ke dalam data boolean (boolean), yaitu, itu hanya bisa benar atau salah;
Karena JavaScript adalah bahasa tipe yang lemah (variabel tidak memiliki tipe data tetap), kadang -kadang perlu dilemparkan ke tipe yang sesuai, seperti:
Salinan kode adalah sebagai berikut:
a = parseInt ("1234")
a = ”1234 ″ -0 // Konversi ke nomor
b = 1234+”// Konversi ke string
c = someObject.toString () // Konversi objek menjadi string
Di antara mereka, yang pertama dan keempat adalah konversi eksplisit, dan 2 dan 3 adalah konversi implisit
Konversi Boolean, Aturan Konvensi JavaScript
false, tidak terdefinisi, null, 0, "" adalah false
Benar, 1, "somestring", [objek] adalah benar
Untuk nilai -nilai lain yang dikonversi secara implisit seperti nol dan tidak terdefinisi, operator!
Mari kita lihat lagi:
Salinan kode adalah sebagai berikut:
var foo;
waspada (! foo); // Dalam kasus yang tidak difitnah, tanda seru mengembalikan true;
waspada (! goo); // dalam kasus null, kembalinya tanda seru juga benar;
var o = {flag: true};
var test = !! o.flag; // setara dengan var test = o.flag || false;
waspada (tes);
Contoh ini menunjukkan bahwa ketika tidak difitnah dan nol, pengembalian satu titik seru adalah benar, dan pengembalian dua titik seru adalah salah, sehingga fungsi dari dua titik seru adalah bahwa jika nilai variabel diatur dengan jelas (non-non-fungsi NULL/TIDAK/0/"dan" Nilai yang setara), hasilnya akan dikembalikan berdasarkan nilai aktual dari variabel.