Pemetaan Tipe ECMAScript
- Halaman sebelumnya Tipe Asli ECMAScript
- Halaman berikutnya Tipe Referensi ECMAScript
Salah satu fitur penting paling penting dari semua bahasa pemrograman adalah kemampuan untuk melakukan konversi tipe.
ECMAScript menyediakan banyak method konversi tipe yang sederhana bagi para pengembang.
Sebagian besar tipe memiliki method konversi sederhana, serta beberapa method global yang dapat digunakan untuk konversi yang lebih kompleks. Dalam semua kasus, konversi tipe di ECMAScript adalah operasi tahap singkat.
Konversi ke string
Yang menarik tentang nilai asli Boolean, angka dan string ECMAScript adalah mereka adalah objek palsu, yang berarti mereka sebenarnya memiliki properti dan method.
Contoh, untuk mendapatkan panjang string, dapat menggunakan kode di bawah ini:
var sColor = 'red'; alert(sColor.length); // output '3'
Walaupun 'red' adalah string tipe asli, ia tetap memiliki properti length untuk menyimpan ukuran string.
Secara keseluruhan, 3 jenis tipe asli utama Boolean, angka dan string memiliki method toString(), yang dapat mengubah nilai mereka ke string.
Petunjuk:Anda mungkin akan bertanya, 'String ada method toString() juga, ini tak lelah kan?' Ya, benar saja, namun ECMAScript mengatur semua objek memiliki method toString(), baik itu objek palsu maupun objek sebenarnya. Karena tipe String termasuk objek palsu, jadi pasti ada method toString() nya.
Boolean 类型的 toString() 方法只是输出 "true" 或 "false",结果由变量的值决定:
var bFound = false; alert(bFound.toString()); //输出 "false"
Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基数模式。采用默认模式,toString() 方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学计数法),如下所示:
var iNum1 = 10; var iNum2 = 10.0; alert(iNum1.toString()); //输出 "10" alert(iNum2.toString()); //输出 "10"
Keterangan:在默认模式中,无论最初采用什么表示法声明数字,Number 类型的 toString() 方法返回的都是数字的十进制表示。因此,以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。
使用 Number 类型的 toString() 方法的基数模式,可以用不同的基数输出数字,例如二进制的基数是 2,八进制的基数是 8,十六进制的基数是 16。
基数这只是要转换成的基数的另一种加法,它是 toString() 方法的参数:
var iNum = 10; alert(iNum.toString(2)); //输出 "1010" alert(iNum.toString(8)); //输出 "12" alert(iNum.toString(16)); //输出 "A"
在前面的示例中,以 3 种不同的形式输出了数字 10,即二进制形式、八进制形式和十六进制形式。HTML 使用十六进制表示每种颜色,在 HTML 中处理数字时这种功能非常有用。
Keterangan:对数字调用 toString(10) 与调用 toString() 相同,它们返回的都是该数字的十进制形式。
参阅:
Lihat Panduan Rujukan JavaScript提供关于 toString() 方法的详细信息:
Konversi ke angka
ECMAScript menyediakan dua metode untuk mengkonversi nilai asli yang bukan angka ke angka, yaitu parseInt() dan parseFloat().
Seperti yang diharapkan, yang pertama mengubah nilai ke bilangan bulat, sedangkan yang kedua mengubah nilai ke bilangan desimal. Hanya memanggil tipe String yang memungkinkan mereka untuk berjalan dengan benar; untuk tipe lainnya, mereka mengembalikan NaN.
parseInt()
Sebelum mengecek apakah string adalah nilai angka, parseInt() dan parseFloat() akan menganalisis string dengan seksama.
Metode parseInt() akan melihat karakter posisi 0 pertama, untuk mengecek apakah ia adalah angka yang sah; jika tidak, metode ini akan mengembalikan NaN dan berhenti melanjutkan operasi lain. Namun, jika karakter itu adalah angka yang sah, metode ini akan melihat karakter posisi 1, untuk pemeriksaan yang sama. Proses ini akan berlanjut sampai menemukan karakter yang tidak sah, saat ini parseInt() akan mengkonversi string sebelum karakter itu ke bilangan.
Contohnya, jika ingin mengkonversi string "12345red" ke bilangan bulat, parseInt() akan mengembalikan 12345, karena saat memeriksa karakter r, proses pemeriksaan akan berhenti.
Nilai ekuivalen angka dalam string akan diubah ke angka dengan benar, seperti "0xA" akan diubah ke angka 10. Namun, string "22.5" akan diubah menjadi 22, karena titik desimal adalah karakter yang tidak berlaku untuk bilangan bulat.
Berikut adalah beberapa contoh:
var iNum1 = parseInt("12345red"); //kembalikan 12345 var iNum1 = parseInt("0xA"); //kembalikan 10 var iNum1 = parseInt("56.9"); //kembalikan 56 var iNum1 = parseInt("red"); //kembalikan NaN
Metode parseInt() juga memiliki modus basis, yang dapat mengkonversi string biner, oktal, hexadesimal, serta sistem bilangan lain ke bilangan bulat. Basisnya ditentukan oleh parameter kedua parseInt(), jadi untuk mengkonversi nilai hexadesimal, perlu memanggil parseInt() seperti berikut:
var iNum1 = parseInt("AF", 16); //kembalikan 175
Tentu, untuk sistem bilangan biner, oktal, serta desimal (mod baku), penggunaan parseInt() seperti ini adalah memungkinkan:
var iNum1 = parseInt("10", 2); //kembalikan 2 var iNum2 = parseInt("10", 8); //kembalikan 8 var iNum3 = parseInt("10", 10); //kembalikan 10
Jika angka desimal mengandung nol awal, lebih baik menggunakan bilangan asal 10, supaya tidak mendapatkan nilai oktal secara tak sengaja. Contohnya:
var iNum1 = parseInt("010"); //kembalikan 8 var iNum2 = parseInt("010", 8); //kembalikan 8 var iNum3 = parseInt("010", 10); //kembalikan 10
Dalam kode ini, dua baris kode mengartikan karakter "010" menjadi angka. Baris pertama menganggap string ini sebagai nilai oktal, mengartikan nya seperti baris kedua (dideklarasikan bilangan asal 8). Baris terakhir mendeklarasikan bilangan asal 10, jadi iNum3 akhirnya sama dengan 10.
Lihat
Lihat Panduan Rujukan JavaScriptRincian yang disediakan tentang metode parseInt():parseInt().
parseFloat()
Metode parseFloat() menangani seperti metode parseInt(), melihat setiap karakter dari posisi 0 sampai menemukan karakter yang tidak sah pertama, kemudian mengubah string sebelum karakter ini menjadi bilangan bulat.
Namun, untuk metode ini, titik decimal yang muncul pertama adalah karakter yang sah. Jika ada titik decimal yang kedua, titik decimal kedua akan dianggap tidak sah. parseFloat() akan mengubah karakter sebelum titik decimal ini menjadi angka. Ini berarti string "11.22.33" akan diartikan sebagai 11.22.
Penggunaan lain untuk metode parseFloat() adalah, string mesti diwakili dalam bentuk desimal bilangan pecahan, bukannya dalam sistem heksadesimal atau oktal. Metode ini akan mengabaikan nol awal, jadi angka oktal 0102 akan diartikan sebagai 102. Untuk angka heksadesimal 0xA, metode ini akan kembalikan NaN, karena dalam bilangan pecahan, x bukan karakter yang sah. (Keterangan:Setelah tes, implementasi penggunaan penggunaan penyedia layanan yang khusus akan kembalikan 0, bukannya NaN.)
Selain itu, metode parseFloat() juga tidak ada modus asal.
Berikut adalah beberapa contoh penggunaan metode parseFloat():
var fNum1 = parseFloat("12345red"); //kembalikan 12345 var fNum2 = parseFloat("0xA"); //kembalikan NaN var fNum3 = parseFloat("11.2"); //kembalikan 11.2 var fNum4 = parseFloat("11.22.33"); //kembalikan 11.22 var fNum5 = parseFloat("0102"); //kembalikan 102 var fNum1 = parseFloat("red"); //kembalikan NaN
Lihat
Lihat Panduan Rujukan JavaScriptRangkaian perincian tentang method parseFloat():parseFloat().
Pemilihan jenis data paksa
Anda boleh juga menggunakanPemilihan jenis data paksa (type casting)Untuk mengurus jenis data nilai yang diubah. Pemilihan jenis data paksa boleh digunakan untuk mengakses nilai khusus, walaupun ia adalah jenis lain.
Kutip penulis:Cast mempunyai makna "pemecah", yang sesuai dengan makna "pemilihan jenis data paksa".
Terdapat tiga jenis pemilihan jenis data paksa yang tersedia dalam ECMAScript adalah:
- Boolean(value) - Menubah nilai yang diberikan kepada jenis Boolean;
- Number(value) - Menubah nilai yang diberikan kepada nombor (boleh mengandungi bulat atau bilangan titik);
- String(value) - Menubah nilai yang diberikan kepada string;
Menggunakan salah satu daripada tiga fungsi ini untuk mengubah nilai, akan mencipta nilai baru yang menyimpan nilai yang diubah secara langsung daripada nilai asal. Ini akan mengakibatkan kesan yang tak dijangka.
Fungsi Boolean()
Jika nilai yang akan diubah adalah string yang mengandungi sekurang-kurangnya satu aksara, nombor bukan 0 atau objek, fungsi Boolean() akan mengembalikan true. Jika nilai adalah string kosong, nombor 0, undefined atau null, ia akan mengembalikan false.
Boleh digunakan kod di bawah untuk menguji pemilihan jenis data paksa Boolean:
var b1 = Boolean(""); //false - string kosong var b2 = Boolean("hello"); //true - string bukan kosong var b1 = Boolean(50); //true - nombor bukan nol var b1 = Boolean(null); //false - null var b1 = Boolean(0); //false - nol var b1 = Boolean(new object()); //true - objek
Fungsi Number()
Pemilihan jenis data paksa Number() sama seperti method parseInt() dan parseFloat(), hanya ia mengubah nilai keseluruhan, bukan hanya sebahagian daripada nilai.
Ingati, method parseInt() dan parseFloat() hanya mengubah string sebelum karakter yang tidak sah pertama, jadi "1.2.3" akan diubah menjadi "1" dan "1.2" secara berasingan.
Pemanggilan paksa tipe Number(), "1.2.3" akan kembali NaN, karena nilai string yang keseluruhan tidak dapat diubah menjadi angka. Jika nilai string dapat diubah secara penuh, Number() akan mengevaluasi apakah memanggil metode parseInt() atau parseFloat() method.
Tabel di bawah ini menjelaskan apa yang terjadi saat memanggil metode Number() untuk nilai yang berbeda:
Penggunaan | Hasil |
---|---|
Number(false) | 0 |
Number(true) | 1 |
Number(undefined) | NaN |
Number(null) | 0 |
Number("1.2") | 1.2 |
Number("12") | 12 |
Number("1.2.3") | NaN |
Number(new object()) | NaN |
Number(50) | 50 |
Fungsi String()
Metode konversi tipe paksa terakhir String() yang paling sederhana, karena ia dapat mengonversi setiap nilai ke string.
Untuk melaksanakan konversi tipe paksa ini, hanya perlu memanggil metode toString() yang dihantar sebagai parameter nilai, yaitu mengkonversi 12 ke "12", mengkonversi true ke "true", mengkonversi false ke "false", dan seterusnya.
Perbezaan tunggal antara konversi tipe paksa ke string dan pemanggilan metode toString() adalah, konversi tipe paksa nilai null dan undefined dapat menghasilkan string tanpa memicu kesalahan:
var s1 = String(null); // "null" var oNull = null; var s2 = oNull.toString(); // akan memicu kesalahan
Pada penggunaan bahasa pemrograman yang lemah seperti ECMAScript, konversi tipe paksa sangat berguna, namun seharusnya memastikan penggunaan nilai yang benar.
- Halaman sebelumnya Tipe Asli ECMAScript
- Halaman berikutnya Tipe Referensi ECMAScript