1. Jenis non-numerik ke nilai numerik
Saat menggunakan konversi Number() :
Saat menggunakan parseInt() untuk mengonversi:
var num1 = parseInt ("10", 2); // 2 parse var num2 = parseInt ("10", 8); // 8 parse var num3 = parseInt ("10", 10); // 10 parse var num4 = parseInt ("10", 16); // 16 Parse dalam heksadesimal Saat menggunakan konversi parseFloat() :
Perbedaan pertama antara parsefloat dan parseInt adalah bahwa ia menemukan karakter numerik floating-point yang tidak valid saat menguraikan string, yang lebih dari sekadar parseint.
Mengembalikan 0 saat mem -parsing nilai heksadesimal
var num = parsefloat ("0xa"); // 0var num = parseInt ("0xa"); // 10Fungsi parsefloat tidak memiliki parameter kedua yang menentukan kardinalitas, jadi hanya nilai desimal yang diuraikan.
Jika string adalah bilangan bulat, ia mengembalikan bilangan bulat alih -alih nomor titik mengambang
var num = parseFloat("2.125e7"); //31250000
2. Gunakan ToString () untuk output nilai dalam angka yang berbeda
Bilah ini berlaku untuk bilangan bulat, kita dapat menggunakan tostring () untuk mengembalikan bilangan bulat dalam format biner apa pun.
var num = 10; alert (num.toString ()); //"10"Alert(num.tostring(9)); //"11"alert(num.tostring(16)); //"A"
3. Perhatikan Nan dan Infinity saat operator bit
Saat menggunakan operator bit untuk NAN dan Infinity, kedua nilai diperlakukan sebagai 0. Jika operator bit diterapkan pada nilai non-numerik, nilainya dikonversi ke nilai numerik menggunakan fungsi angka ().
Hal lain yang perlu diperhatikan adalah bahwa pergeseran kanan yang tidak ditandatangani dari angka negatif, dan pergeseran kanan yang tidak ditandatangani adalah mengisi ruang kosong dengan 0, tidak seperti pergeseran kanan yang ditandatangani dengan bit tanda, sehingga pergeseran kanan yang tidak ditandatangani dan pergeseran kanan yang ditandatangani dari bilangan positif adalah sama, tetapi angka negatif berbeda. Operasi shift kanan yang tidak ditandatangani akan memperlakukan kode biner negatif sebagai kode biner positif, dan angka negatif diwakili dalam bentuk komplemen, yang akan menyebabkan hasil dari pergeseran kanan yang tidak ditandatangani menjadi sangat berbeda.
var oldValue = -64; var newValue = oldValue >>> 5
4. Operasi Numerik Khusus
Untuk operasi numerik, jika ada operan yaitu NAN, hasilnya adalah NAN.
Gunakan operasi satu-dalam-satu atau operasi pengurangan (+,-, plus atau tanda negatif) untuk nilai non-numerik. Jika nilai tidak dapat dikonversi ke nilai numerik (dikonversi menggunakan nomor () metode), NAN dikembalikan.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valueof: function () {return -1;}}; s1 = +s1; // 1 + Ubah ke -: -1S2 = + S2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; //-1 1Mengalikan infinity dan 0 sama dengan NAN, dan mengalikan non -0 adalah infinity dan -infinity, tergantung pada tanda pengganda. Mengalikan infinity dan infinity sama dengan tak terbatas.
var num1 = infinity, num2 = 0, num3 = -2, num4 = -infinity; waspada (num1 * num2); // nanalert (num1 * num3); //-infinityalert (num1 * num4); //-Ketakterbatasan
Nol dibagi menjadi nol dan nan, dan angka non -nol dibagi dengan nol adalah tak terbatas atau -infinitas. Infinity dibagi dengan tak terbatas seperti nan
Untuk operasi modulo, persamaan berikut berlaku:
Infinity%2 = nan; 2%-Infinity = 2; 0%Infinity = 0; // Selama pembagi adalah 0, pembagi tidak nan, hasilnya adalah 0infinity%0 = nan; // pembagi bisa berupa angka berapa pun, dan selama pembagi adalah 0, hasilnya adalah naninfinity%infinity = nan
Operasi Penambahan: Jika kedua operan adalah string, + menjadi gabungan string. Jika satu adalah string dan yang lainnya adalah nilai numerik, konversi nilai numerik ke string, dan kemudian gabungkan string. Jika operan adalah objek, nilai boolean pertama -tama akan memanggil metode nilai mereka. Jika tidak ada, hubungi metode tostring. Kemudian, berdasarkan jenis nilai pengembalian, tentukan apakah tanda + harus dihubungkan ke string atau ditambahkan.
Infinity + -infinity = nan; var p = {valueof: function () {return -1; }}; var num = 1; var result = num +p; peringatan (hasil); // 0 tambahkan var p = {valueof: function () {return "not a num"; }}; var num = 1; var result = num +p; peringatan (hasil); // 1 tidak ada num string concatenationOperasi Pengurangan: Operasi pengurangan sangat mirip dengan operasi penambahan, dan pemrosesan objeknya sama, jadi saya tidak akan menjelaskannya lagi.
Infinity - Infinity = nan; -infinity - -infinity = nan;
5. Penggunaan operator relasional
Operator relasional kurang dari (<), lebih besar dari (>), kurang dari atau sama dengan (<=) dan lebih besar dari atau sama dengan (> =)
Selama ada satu nilai, perbandingan numerik akan dilakukan, dan yang lainnya bukan nilai numerik, dan itu akan dikonversi menjadi nilai numerik. Gunakan nilai pertama untuk objek, dan kemudian gunakan tostring. Bahkan, tidak peduli operasi apa yang dilakukan objek, ini benar. Jika ada nilai, nilai digunakan untuk mengembalikan nilai, jika tidak, ToString digunakan untuk mengembalikan nilai.
Keduanya adalah string, kemudian membandingkan nilai pengkodean karakter dari string (nilai ASCII)
Mengenai yang pertama, harus dicatat bahwa ketika suatu string adalah nilai numerik, ketika suatu string tidak dapat dikonversi menjadi nilai numerik, situasi berikut akan terjadi sebagai NAN.
var result = "a" <3; // false a mengkonversi a ke nanvar hasil = "a"> = 3; // Salah nomor apa pun dibandingkan dengan NAN adalah salah
6. == dan ===
Dalam JavaScript, jika kedua sisi persamaan memiliki jenis yang berbeda, atau hanya satu objek yang disertakan, maka perbandingan akan dibagi menjadi dua situasi, dan perbandingan setelah transformasi secara langsung dibandingkan dengan tidak ada transformasi. == adalah untuk mengonversi terlebih dahulu dan membandingkan, === adalah untuk membandingkan secara langsung tanpa mengonversi. Untuk ===, ia mengembalikan false selama jenisnya tidak sama. Untuk ==, ini dibagi menjadi situasi berikut:
Benar akan dikonversi menjadi 1, false akan dikonversi menjadi 0.
Membandingkan string dengan nilai numerik, string dikonversi ke nilai numerik.
Jika hanya ada satu objek di kedua sisi persamaan, objek ini akan memanggil nilai dari untuk mendapatkan tipe dasar, seperti memanggil metode ToString tanpa metode nilai. Jika kedua belah pihak adalah objek, tidak ada transformasi yang akan dilakukan.
var p = {"name": "a"}; var q = {"name": "a"} var o = p; alert (q == p); // Salah Alamat objek yang ditunjukkan oleh P dan Q berbeda, meskipun konten objek adalah peringatan yang sama (O == P); //BENARBerikut perbandingan khusus
null == tidak terdefinisi // truenan! = nan // truenan == nan // false "nan" == nan // falseundefined == 0 // falsenull == 0 // false
7. Pernyataan for-in
Urutan output dari pernyataan untuk dalam tidak dapat diprediksi, dan urutannya dapat bervariasi tergantung pada browser.
Ketika variabel untuk mengulang tidak nol atau tidak terdefinisi, kesalahan tidak akan lagi dilemparkan di bawah ecmascript 5, tetapi badan loop tidak akan dieksekusi. Jika Anda ingin ke depan kompatibilitas, Anda akan menilai bahwa itu bukan nol atau tidak terdefinisi sebelum loop.
8. Pernyataan Swethc
Switch dapat menggunakan tipe data apa pun.
Nilai suatu kasing dapat berupa konstan, variabel, dan ekspresi.
Pernyataan sakelar menggunakan operator perbandingan kongruen (===) saat membandingkan nilai.
var num = 25; switch (true) {case num <0: alert ("Less 0"); merusak; case num> = 0: peringatan ("lebih dari 0"); merusak; default: peringatan ("error");}9 Penggunaan Fungsi
Jika tidak ada pernyataan pengembalian dalam fungsi atau pengembalian tidak memiliki nilai pengembalian, fungsi akan mengembalikan tidak ditentukan.
Definisi suatu fungsi tidak konsisten dengan parameter fungsi saat menyebutnya. Dengan kata lain, dua parameter (parameter formal dan parameter aktual) tidak memiliki koneksi. Variabel yang disediakan saat mendefinisikan fungsi hanya lebih nyaman untuk digunakan. Bahkan jika mereka tidak didefinisikan, parameter yang diteruskan ke fungsi dapat diperoleh (melalui argumen []).
function howmanyargs () {alert (arguments.length);} howmanyargs ("a"); // 1 wowmanyargs ("a", "b"); // 2howmanyargs (); // 0Hubungan antara parameter formal dan argumen [] adalah sebagai berikut, memperhatikan perbedaan antara mode ketat dan mode non-ketat.
fungsi howmanyargs (ss) {argumen [0] = "test"; argumen [1] = "test2" peringatan (argumen [0]); // uji peringatan (argumen [1]); // test2 alert (ss); // test} howmanyargs ("a"); function howmanyargs (ss) {"gunakan argumen ketat" [0] = "test"; argumen [1] = "test2" peringatan (argumen [0]); // testalert (argumen [1]); // test2alert (ss); // a} howmanyargs ("a");10. Penggunaan parameter fungsi
Saat mendefinisikan suatu fungsi, kami akan menulis parameter yang digunakan ke dalam tanda kurung fungsi, tetapi akan cukup tidak fleksibel ketika ada beberapa parameter opsional. Pada saat ini, kita dapat menggunakan objek untuk merangkum beberapa parameter opsional.
function displayInfo (args) {var output = ""; if (typeof args.name == "string") {output + = "name:" + args.name + "/n"; } if (typeof args.age == "angka") {output + = "usia:" args.age + "/n"; } peringatan (output); } displayInfo ({name: "nicholas", usia: 29}); displayInfo ({name: "greg"});