Jenis data JavaScript
Jenis Data JavaScript
Jenis Data
Terdapat 5 jenis data ringkas (juga dipanggil jenis data asas) dalam JavaScript: Undefined, Null, Boolean, Number dan rentetan. Terdapat juga jenis data yang kompleks - Objek pada asasnya terdiri daripada satu set pasangan nilai nama yang tidak tertib.
pengendali jenis
Memandangkan JavaScript ditaip secara longgar, perlu ada cara untuk mengesan jenis data pembolehubah tertentu - typeof ialah pengendali yang bertanggungjawab untuk menyediakan maklumat pihak penyedia. Menggunakan operator jenis pada nilai boleh mengembalikan salah satu rentetan berikut:
● "undefined" - jika nilai tidak ditentukan
● "boolean" - jika nilai ialah Nilai Boolean;
● "rentetan" - jika nilai ialah rentetan;
● "nombor" - jika nilai ialah nilai angka; nilai ini adalah objek atau nol; Apabila pembolehubah diisytiharkan menggunakan var tetapi tidak dimulakan, nilai pembolehubah tidak ditentukan, contohnya:
var message;
alert(message == undefined) //trueJenis Null
Jenis Null ialah jenis data kedua dengan hanya satu nilai nilai istimewa ini. Dari sudut pandangan logik, nilai nol mewakili penunjuk objek nol, dan inilah sebabnya mengapa "objek" dikembalikan apabila menggunakan operator jenis untuk mengesan nol, contohnya:
var car = null;
alert(typeof car); // "objek"
Jika pembolehubah yang ditakrifkan akan digunakan untuk menyimpan objek pada masa hadapan, adalah lebih baik untuk memulakan pembolehubah kepada null dan bukannya yang lain nilai. Dengan cara ini, anda boleh mengetahui sama ada pembolehubah yang sepadan sudah memegang rujukan kepada objek dengan mengesan secara langsung nilai nol, sebagai contoh:
if(car != null)
{ -262 menyatakan bahawa ujian untuk kesamarataan mereka harus kembali benar.
alert(undefined == null); //true
Jenis Boolean
Jenis ini hanya mempunyai dua nilai literal: benar dan palsu. Kedua-dua nilai ini bukan perkara yang sama dengan nilai angka, jadi benar tidak semestinya sama dengan 1 dan palsu tidak semestinya sama dengan 0.
Walaupun terdapat hanya dua nilai literal jenis Boolean, semua jenis nilai dalam JavaScript mempunyai nilai yang setara dengan dua nilai Boolean ini. Untuk menukar nilai kepada nilai Boolean yang sepadan, anda boleh memanggil fungsi penukaran jenis Boolean(), contohnya:
var message = 'Hello World' var messageAsBoolean = Boolean(message);
Dalam contoh ini, mesej rentetan ditukar kepada nilai Boolean, yang disimpan dalam pembolehubah messageAsBoolean. Fungsi Boolean() boleh dipanggil pada nilai mana-mana jenis data dan akan sentiasa mengembalikan nilai Boolean. Sama ada nilai yang dikembalikan adalah benar atau palsu, ia bergantung pada jenis data nilai yang hendak ditukar dan nilai sebenarnya. Jadual berikut memberikan peraturan penukaran untuk pelbagai jenis data dan objeknya.
Peraturan penukaran ini sangat penting untuk memahami penyataan kawalan aliran (seperti pernyataan if) dan secara automatik melaksanakan penukaran Boolean yang sepadan, contohnya:
var message = 'Hello World'; if(message) { alert("Value is true"); }
Jalankan contoh ini, kotak amaran akan dipaparkan kerana aksara Mesej rentetan secara automatik ditukar kepada nilai Boolean yang sepadan (benar). Oleh kerana penukaran Boolean yang dilakukan secara automatik ini, adalah penting untuk mengetahui dengan tepat pembolehubah yang digunakan dalam pernyataan kawalan aliran.
Jenis nombor
Jenis ini digunakan untuk mewakili integer dan nilai titik terapung, dan terdapat juga nilai istimewa, NaN (Bukan Nombor). Nilai ini digunakan untuk menunjukkan bahawa operan yang sepatutnya mengembalikan nilai tidak mengembalikan nilai (supaya ralat tidak dilemparkan). Contohnya, dalam bahasa pengaturcaraan lain, membahagikan sebarang nilai angka dengan sifar menghasilkan ralat yang menghentikan pelaksanaan kod. Tetapi dalam JavaScript, sebarang nilai dibahagikan dengan 0 akan mengembalikan NaN, jadi ia tidak akan menjejaskan pelaksanaan kod lain.
NaN sendiri mempunyai dua ciri yang luar biasa. Pertama, sebarang operasi yang melibatkan NaN (seperti NaN/10) akan mengembalikan NaN, yang boleh menyebabkan masalah dalam pengiraan berbilang langkah. Kedua, NaN tidak sama dengan sebarang nilai, termasuk NaN itu sendiri. Sebagai contoh, kod berikut mengembalikan palsu.
alert(NaN == NaN); //false
Terdapat fungsi isNaN() dalam JavaScript Fungsi ini menerima parameter, yang boleh daripada sebarang jenis dan fungsi ini akan membantu kami menentukan sama ada parameter ini "bukan nilai berangka". Selepas isNaN() menerima nilai, ia akan cuba menukar nilai itu kepada nilai berangka. Sesetengah nilai yang bukan angka ditukar terus kepada nilai angka, seperti rentetan "10" atau nilai Boolean. Sebarang nilai yang tidak boleh ditukar kepada nilai angka akan menyebabkan fungsi ini kembali benar. Contohnya:
alert(isNaN(NaN)); //true alert(isNaN(10)); //false(10是一个数值) alert(isNaN("10")); //false(可能被转换为数值10) alert(isNaN("blue")); //true(不能被转换为数值) alert(isNaN(true)); //false(可能被转换为数值1)
Terdapat 3 fungsi yang boleh menukar nilai bukan angka kepada nilai angka: Number(), parseInt() dan parseFloat(). Fungsi pertama, fungsi penukaran Number(), boleh digunakan untuk sebarang jenis data, manakala dua fungsi lain digunakan secara khusus untuk menukar rentetan kepada nombor. Ketiga-tiga fungsi ini akan mengembalikan hasil yang berbeza untuk input yang sama.
Peraturan penukaran fungsi Number() adalah seperti berikut:
● Jika nilai Boolean, true dan false akan digantikan dengan 1 dan 0 masing-masing
● Jika ia adalah nilai berangka, Hanya masukkan dan kembalikan
● Jika ia adalah nilai nol, kembalikan 0
● Jika ia tidak ditentukan, kembalikan NaN
● Jika ia adalah rentetan, ikut peraturan berikut:
○ Jika rentetan hanya mengandungi nombor, ia akan ditukar kepada nilai perpuluhan, iaitu, "1" akan menjadi 1, "123" akan menjadi 123 dan "011" akan menjadi 11 (0 pendahuluan diabaikan)
○ Jika rentetan mengandungi format titik terapung yang sah, seperti "1.1", ia akan ditukar kepada nombor titik terapung yang sepadan (begitu juga , mendahului 0 juga akan diabaikan)
○ Jika rentetan mengandungi format perenambelasan yang sah, seperti "0xf", kemudian tukarkannya kepada nilai integer perpuluhan dengan saiz yang sama
○ Jika rentetan itu kosong, kemudian tukarkannya menjadi 0
○ Jika rentetan mengandungi aksara selain daripada format di atas, tukarkannya kepada NaN
● Jika ia adalah objek, panggil valueOf() kaedah objek, dan kemudian ikuti Peraturan sebelumnya mengubah nilai yang dikembalikan. Jika hasil penukaran ialah NaN, kaedah toString() objek dipanggil, dan kemudian nilai rentetan yang dikembalikan ditukar mengikut peraturan sebelumnya.
var num1 = Number("Hello World"); //NaN var num2 = Number(""); //0 var num3 = Number("000011"); //11 var num4 = Number(true); //1
Memandangkan fungsi Number() adalah kompleks dan tidak munasabah apabila menukar rentetan, fungsi parseInt() lebih biasa digunakan semasa memproses integer. Apabila fungsi parseInt() menukar rentetan, ia lebih bergantung pada sama ada ia mematuhi corak berangka. Ia mengabaikan ruang utama dalam rentetan sehingga ia menemui aksara bukan ruang pertama. Jika rentetan pertama bukan aksara angka atau tanda negatif, parseInt() akan mengembalikan NaN, iaitu menggunakan parseInt() untuk menukar rentetan kosong akan mengembalikan NaN. Jika aksara pertama ialah aksara angka, praseInt() akan terus menghuraikan aksara kedua sehingga semua aksara berikutnya telah dihuraikan atau aksara bukan angka ditemui. Contohnya, "1234blue" akan ditukar kepada 1234 dan "22.5" akan ditukar kepada 22, kerana titik perpuluhan bukan aksara angka yang sah.
Jika aksara pertama dalam rentetan ialah aksara angka, parseInt() juga boleh mengecam pelbagai format integer (iaitu perpuluhan, perlapanan, perenambelasan). Untuk lebih memahami peraturan penukaran fungsi parseInt(), beberapa contoh diberikan di bawah
var num1 = parseInt("1234blue"); //1234 var num2 = parseInt(""); //NaN var num3 = parseInt("0xA"); //10(十六进制) var num4 = parseInt("22.5"); //22 var num5 = parseInt("070"); //56(八进制) var num6 = parseInt("70"); //70 var num7 = parseInt("10",2); //2(按二进制解析) var num8 = parseInt("10",8); //8(按八进制解析) var num9 = parseInt("10",10); //10(按十进制解析) var num10 = parseInt("10",16); //16(按十六进制解析) var num11 = parseInt("AF"); //56(八进制) var num12 = parseInt("AF",16); //175
Sama seperti fungsi parseInt(), parseFloat() juga bermula dari aksara pertama (kedudukan 0) mula menghuraikan setiap aksara. Dan ia dihuraikan sehingga penghujung rentetan, atau sehingga aksara angka titik terapung yang tidak sah ditemui. Maksudnya, titik perpuluhan pertama dalam rentetan adalah sah, tetapi titik perpuluhan kedua tidak sah, jadi rentetan selepasnya akan diabaikan. Sebagai contoh, "22.34.5" akan ditukar kepada 22.34.
Perbezaan kedua antara parseFloat() dan parseInt() ialah ia sentiasa mengabaikan sifar pendahuluan. Oleh kerana nilai parseFloat() menghuraikan nilai perpuluhan, ia tidak mempunyai penggunaan untuk menentukan asas dengan hujah kedua.
var num1 = parseFloat("1234blue"); //1234 var num2 = parseFloat("0xA"); //0 var num3 = parseFloat("22.5"); //22.5 var num4 = parseFloat("22.34.5"); //22.34 var num5 = parseFloat("0908.5"); //908.5
Jenis rentetan
Jenis rentetan digunakan untuk mewakili aksara yang terdiri daripada sifar atau lebih aksara Unicode 16-bit Urutan, iaitu rentetan. Rentetan boleh diwakili dengan petikan tunggal (') atau petikan berganda (").
var str1 = "Hello"; var str2 = 'Hello';
Sebarang rentetan Panjangnya boleh diperolehi dengan mengakses atribut panjangnya
Alert(str1.length); //Output 5
Terdapat dua cara untuk menukar nilai kepada rentetan kaedah toString() yang ada pada hampir setiap nilai var age = 11; var ageAsString = age.toString(); /String "true"
Nilai angka, Boolean, objek dan rentetan semuanya mempunyai kaedah toString(), tetapi nilai null dan undefined tidak mempunyai kaedah ini 🎜> Dalam kebanyakan kes, anda tidak perlu menghantar parameter apabila memanggil kaedah toString() sesuatu nilai Anda boleh menghantar parameter: asas nilai output 🎜>
var num = 10; alert(num.toString()); //"10" alert(num.toString(2)); //"1010" alert(num.toString(8)); //"12" alert(num.toString(10)); //"10" alert(num.toString(16)); //"a"
Ia boleh dilihat daripada contoh ini bahawa dengan menentukan asas, kaedah toString() akan mengubah nilai output. Nilai 10 boleh ditukar kepada format berangka yang berbeza semasa output bergantung pada asas.
Apabila anda tidak tahu sama ada nilai yang hendak ditukar adalah batal atau tidak ditentukan, anda juga boleh menggunakan fungsi penukaran String(). Fungsi String() mengikut peraturan penukaran berikut:
● Jika nilai mempunyai kaedah toString(), kaedah dipanggil (tanpa parameter) dan hasil yang sepadan dikembalikan
● Jika nilai adalah nol, kemudian Kembalikan "null"
● Jika nilai tidak ditentukan, kembalikan "undefined"
var value1 = 10; var value2 = true; var value3 = null; var value4; alert(String(value1)); //"10" alert(String(value2)); //"true" alert(String(value3)); //"null" alert(String(value4)); //"undefined"
Jenis objek
Objek sebenarnya ialah koleksi data dan fungsi. Objek boleh dibuat dengan melaksanakan operator baru diikuti dengan nama jenis objek yang akan dibuat. Anda boleh mencipta objek tersuai dengan mencipta contoh jenis Objek dan menambah sifat dan/atau kaedah padanya.
var o = new Object();
Setiap contoh Objek mempunyai sifat dan kaedah berikut:
● pembina - memegang objek yang digunakan untuk mencipta fungsi Objek semasa
● hasOwnProperty(propertyName) - digunakan untuk menyemak sama ada sifat yang diberikan wujud dalam contoh objek semasa (bukan dalam prototaip contoh). Antaranya, nama sifat (propertyName) sebagai parameter mesti dinyatakan dalam bentuk rentetan (contohnya: o.hasOwnProperty("name"))
● isPrototypeOf(objek) - digunakan untuk menyemak sama ada objek masuk ialah Prototaip objek lain
● propertyIsEnumerable(propertyName) - digunakan untuk menyemak sama ada harta yang diberikan boleh dikira menggunakan pernyataan for-in
● toString() - mengembalikan representasi rentetan objek
● valueOf() - Mengembalikan rentetan, angka atau perwakilan Boolean objek. Biasanya sama dengan nilai pulangan kaedah toString().