Pertama, mari kita lakukan beberapa pertanyaan terlebih dahulu! Untuk menyatukan, saya tidak mencampur pertanyaan -pertanyaan ini. Dalam pertanyaan wawancara, saya sering mencampur pertanyaan -pertanyaan ini, yang akan membuat Anda lebih bingung. Untuk membuatnya lebih nyaman untuk demonstrasi, saya telah menulis beberapa pertanyaan dalam modul di sini, sehingga Anda dapat membacanya!
Konversi implisit string operator
perkalian
console.dir ("--------------------------"); Console.dir (5*"5"); Console.dir (5*"A"); Console.dir (5*nan); Console.dir (5*null); Console.dir (5*tidak ditentukan); Console.dir (5*5); console.dir("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------divisi
console.dir ("----------------------"); Console.dir (5/"5"); Console.dir (5/"A"); Console.dir (5/nan); Console.dir (5/null); console.dir (null/5); Console.dir (5/tidak terdefinisi); Console.dir (5/5); Console.dir (5/0); Console.dir (0/5); Console.dir (0/0); console.dir ("------------------------"); Console.dir ("-----------------------------");Ambil sisa dan temukan modelnya
Console.dir ("---------------------------"); Console.dir (16%"5"); Console.dir (5%"A"); Console.dir (5%NAN); Console.dir (5%null); console.dir (null%5); Console.dir (5%tidak ditentukan); Console.dir (5%5); Console.dir (5%0); Console.dir (0%5); Console.dir (0%0); Console.dir ("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------tambahan
Console.dir ("-----------------------"); Console.dir (16+ "5"); Console.dir (5+ "A"); console.dir (5+nan); console.dir (5+null); console.dir (5+tidak ditentukan); Console.dir (5+5); console.dir ("Jumlah dua angka adalah"+5+5); console.dir ("jumlah dua angka adalah"+(5+5)); Console.dir ("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Pengurangan
console.dir ("----------------------"); Console.dir (16- "5"); Console.dir (5- "A"); Console.dir (5-nan); Console.dir (5-null); Console.dir (5-tidak ditentukan); Console.dir (5-5); Console.dir (5-true); console.dir (5- "true); console.dir (5-" "); console.dir (" Perbedaan antara dua angka adalah "+5-5); console.dir (" Perbedaan antara dua angka adalah "+(5-5)); console.dir (" ------------------- "); Console.dir ("----------- console.dir("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Operator relasional
console.dir ("--------------------"); Console.dir (16> "5"); Console.dir ("16"> "5"); Console.dir (5 <"A"); console.dir (5> = nan); Console.dir (5 <nan); console.dir (nan> = nan); console.dir (5> = null); console.dir (5> = tidak terdefinisi); console.dir (5> = 5); console.dir (5> = true); console.dir (5> = "true"); console.dir (5> = ""); Console.dir ("Brick"> "Alphabet"); Console.dir ("Brick"> "Alphabet"); Console.dir ("---------------------");perkalian
Console.dir (5*"5"); // 25 console.dir (5*"a"); // nan console.dir (5*nan); // nan console.dir (5*null); 0 console.dir (5*tidak terdefinisi); // nan console.dir (5*5); // 25
Mari kita bicara tentang prinsip konversi perkalian implisit:
1. Jika kedua nilai adalah angka, maka lakukan operasi perkalian secara langsung. (Saya percaya semua orang dapat melakukannya, seperti halnya matematika sekolah dasar, dan Anda harus memperhatikan simbol angka). Jika nilai produk melebihi kisaran representasi numerik ecmascript, maka kembalikan infinity (positif tak terbatas) atau -infinitas (tak terbatas negatif)
2. Jika angka adalah Nan, maka hasilnya adalah Nan
3. Jika Infinity dikalikan dengan 0, hasilnya adalah NAN
4. Jika satu operator adalah angka dan yang lainnya bukan nilai numerik, maka pertama -tama gunakan fungsi angka () untuk mengonversinya, dan melipatgandakan nilai yang dikonversi dengan angka. Jika hasil yang dikonversi muncul NAN, maka hasilnya adalah NAN.
divisi
console.dir (5/"5"); // 1 Konversi karakter menjadi angka dan bagikan konsol.dir (5/"a"); // nan console.dir (5/nan); // nan console.dir (5/null); // infinity nol converts dengan fungsi angka (), dan hasilnya adalah 0, kemudian 5/5/0 console nol dengan fungsi angka (), dan hasilnya adalah 0, kemudian 5/0/0 console nol dengan fungsi nomor (), dan hasilnya adalah 0, kemudian 5/0/5/0 console nol dengan fungsi angka (), dan hasilnya adalah 0, kemudian 5/0/5/0 console nol dengan fungsi angka (), dan hasilnya adalah 0, kemudian 5/5/0 console null dengan fungsi nomor (), dan hasilnya adalah 0, kemudian 5/0/5/0 console nol dengan fungsi nomor (), dan hasilnya adalah 0, kemudian 5/0 0/5 adalah 0 konsol.dir (5/tidak terdefinisi); // nan tidak terdefinisi dengan angka (), dan hasilnya adalah nan console.dir (5/5); // 1 console.dir (5/0); // Infinity console.dir (0/5); // 0 konsol.dir (0/0);/nan/0 nan//0 nan//0 console.dir (0/0);/nan/0 nan/0 nan/0 non/0 nan/0 console.dir (0/0);/nan/0 nan/0 non/0 nan/0 console.dir (0/0);/nan/nan/0 nan/0 non/0 console.dir (0/0);/nan/nan/0 nan/0 IS IS 0/0 IS 0/0 nan/0
Mari kita bicara tentang prinsip konversi implisit divisi:
Mirip dengan perkalian, satu -satunya lagi adalah hasil 0/0 adalah NAN
Ambil sisa dan temukan modelnya
Hal yang paling umum digunakan dalam proyek ini adalah menemukan angka yang aneh dan genap. Kami sering menggunakan angka dengan 2 untuk menghitung saldo. Jika hasilnya adalah 0, maka nomornya adalah angka genap, dan jika hasilnya 1, maka nomornya adalah angka ganjil.
Lihat topik di atas:
Console.dir (16%"5"); // 1 Konversi string 5 hingga 5 melalui angka () dan kemudian hitung konsol yang tersisa.dir (5%"A"); // nan console.dir (5%nan); // nan console.dir (5%null); // nan mengkonversi null melalui angka (), hasilnya adalah 0, dan kemudian menghitung 5%0, hasilnya adalah nan console.dir (null%5); // 0 sama dengan di atas 0%5, hasilnya adalah 0 konsol.dir (5%tidak ditentukan); // nan console.dir (5%5); // 0 console.dir (5%0); // nan console.dir (0%5); // 0 console.dir (0%0); // nanconsole.dir (infinity%infinity); // nanconsole.dir (5%infinity); // 5 console.dir (infinity%5); // nan
Mari kita bicara tentang prinsip konversi residu implisit:
Seperti perkalian, izinkan saya berbicara tentang sesuatu yang istimewa! Kita semua tahu konsep dividen dan pembagi, yang kita pelajari di sekolah dasar.
1. Dividen tidak terbatas dan dividen adalah nilai yang terbatas, jadi hasilnya adalah NAN
2. Pembagi adalah nilai yang terbatas, dan pembagi adalah 0, maka hasilnya adalah Nan
3. Hasil Infinity%Infinity adalah NAN
4. Dividen adalah nilai terbatas, dividen adalah nilai yang tak terbatas, dan hasilnya adalah pembagi.
5. Nomor terbagi adalah 0, hasilnya adalah 0
Pengurangan
Lihatlah contoh di atas!
Console.dir (16- "5"); // 11 console.dir (5- "a"); // nan console.dir (5-nan); // nan console.dir (5-null); // 5 console.dir (5-ucas); // nan console.dir (5-5); // 0 konsol); console.dir (5- "true"); // nan console.dir (5-""); // 5 console.dir (5-infinity); //-Infinity console.dir (infinity-infinity); // nan console.dir ("Perbedaan antara dua angka adalah"+5-5); // nan console.dir ("Perbedaan antara dua angka adalah"+5-5); // nan console.dir Angka adalah 0Mari kita bicara tentang prinsip konversi pengurangan implisit:
Sama seperti di atas, saya tidak akan membicarakan hal yang sama, saya akan berbicara tentang pengurangan yang unik.
1. Hasil Infinity-Infinity adalah NAN
2. -Infinitas -Infinity Hasil adalah -infinitas
3. Hasil dari jumlah minus tak terhingga adalah - Infinity
4. Infinity-(-Infinity) Hasilnya adalah Infinity
5. Jika operan adalah objek, metode nilai objek dipanggil. Jika hasilnya adalah NAN, hasilnya adalah Nan. Jika tidak ada metode nilai, maka hubungi metode tostring () dan konversi string yang dihasilkan ke nilai numerik.
Operator relasional
Operator relasional secara seragam mengembalikan benar atau salah
Console.dir (16> "5"); // console true.dir ("16"> "5"); // false console.dir (5 <"a"); // false console.dir (5> = nan); // false console.dir (5 <nan); // fale console.dir (nan> = nan);//false console.dir (5> = nan (nan> = nan);//false console.dir (5> = nan (nan> = nan);//false console.dir (5> = nan); console.dir (5> = tidak terdefinisi); // false console.dir (5> = 5); // console true console.dir (5> = true); // true console.dir (5> = tidak terdefinisi); // false console.dir (5> = 5); // true consol console.dir(5>="");//true console.dir("Brick">"alphabet");//false The string encoding value of B is 66, while the string encoding of a is 97. Therefore, false console.dir("brick">"alphabet");//true The lowercase letter b is larger than a, so it is trueMari kita bicara tentang prinsip konversi implisit operator relasional:
Itu masih sama seperti di atas, saya tidak akan mengatakan hal yang sama.
Jika dua angka yang dibandingkan adalah string, nilai yang dikodekan string yang sesuai dengan string akan dibandingkan.
Operasi Penambahan
Alasan mengapa saya akhirnya mengatakan bahwa konversi implisit dari operasi penambahan adalah bahwa konversi implisit dari operasi penambahan berbeda dari yang sebelumnya. Semua simbol operator sebelumnya, selama satu adalah angka, yang lain juga menggunakan angka () untuk mengonversi angka secara default. Operasi penambahan berbeda. Selama salah satu operasi penambahan adalah string, yang lain juga akan dikonversi menjadi string dan kemudian splicing string dilakukan!
Console.dir (16+ "5"); // 156 console.dir (5+ "a"); // 5a console.dir (5+nan); // nan console.dir (5+null); // 5 console.dir ('5'+null); // 5null Console.dir (5+tidak didefinisikan); // nan console.dire (null (null+non -non//non -non//nan console.dir (null) (nol//nan (non//nan console.dir (null) (5+nan (5+nan (5+nan (5+nan (5+nan (5+nan) console.dir (5+5); // 10 console.dir ("Jumlah dua angka adalah"+5+5); // jumlah dua angka adalah 55 console.dir ("Jumlah dua angka adalah"+(5+5)); // Jumlah dua angka adalah 10 adalah 10Mari kita bicara tentang prinsip konversi implisit operator tambahan:
1. Satu adalah string, dan yang lainnya juga akan dikonversi menjadi string untuk splicing. Jika satu adalah string dan yang lainnya nol atau tidak terdefinisi, maka menambahkan, nol atau tidak terdefinisi akan memanggil metode string () untuk mendapatkan string "null" atau "tidak terdefinisi", dan kemudian menyambungkannya.
2. Jika angka ditambahkan dengan nol atau tidak terdefinisi, maka nol atau tidak ditentukan dikonversi menjadi angka () dan kemudian ditambahkan.
3. Prinsip -prinsip yang tersisa mirip dengan yang lain, jadi saya tidak akan banyak bicara.
Konversi implisit biequal
Jalankan kode berikut sekali, dan saya yakin Anda akan memahaminya secara alami ~
var a; console.dir (0 == false); // trueconsole.dir (1 == true); // trueconsole.dir (2 == {valueof: function () {return 2}}); // trueconsole.dir (a == nan); // falsconsole.dir.dir (nan = nane (a == nan); tidak terdefinisi); // falseconsole.dir (1 == tidak terdefinisi); // falseconsole.dir (2 == {tostring: function () {return 2}}); // trueconsole.dir (tidak terdefinisi == null); // trueconsole.dir (null ==); toString: function () {return 1}, valueOf: function () {return []}} == 1); // trueconsole.dir (1 == "1"); // trueconsole.dir (1 === "1"); // false