Penjelasan terperinci tentang jenis data JavaScript_Pengetahuan asas

WBOY
Lepaskan: 2016-05-16 16:06:31
asal
942 orang telah melayarinya

Jenis Data

Terdapat 5 jenis data ringkas (juga dipanggil jenis data asas) dalam JavaScript: Tidak Ditakrifkan, Null, Boolean, Nombor dan Rentetan. Terdapat juga jenis data yang kompleks - Objek pada asasnya terdiri daripada satu set pasangan nilai nama yang tidak tertib.

jenis pengendali

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:

● "tidak ditentukan" - jika nilai tidak ditentukan; ● "boolean" - jika nilainya ialah
● "rentetan" - jika nilai ialah rentetan; ● "nombor" - jika nilai ialah nilai angka; ● "objek" - jika nilai ialah objek atau nol; ● "fungsi" - jika nilai ialah fungsi


Jenis tidak ditentukan

Jenis Undefined hanya mempunyai satu nilai, special undefined. Apabila pembolehubah diisytiharkan menggunakan var tetapi tidak dimulakan, nilai pembolehubah tidak ditentukan, contohnya:


Salin kod

Kod adalah seperti berikut: var mesej; alert(message == undefined) //true



Jenis nol

Jenis Null ialah jenis data kedua dengan hanya satu nilai, dan nilai istimewa ini adalah null. Dari sudut logik, nilai nol mewakili penunjuk objek nol, dan inilah sebabnya "objek" dikembalikan apabila menggunakan operator jenis untuk mengesan nol, contohnya:


Salin kod

Kod adalah seperti berikut: var kereta = null; alert(jenis kereta); // "objek"

Jika anda mentakrifkan pembolehubah yang akan digunakan untuk memegang objek pada masa hadapan, adalah lebih baik untuk memulakan pembolehubah kepada null dan bukannya kepada nilai lain. Dengan cara ini, anda boleh mengetahui sama ada pembolehubah yang sepadan sudah memegang rujukan kepada objek dengan mengesan secara langsung nilai nol, sebagai contoh:



Salin kod
Kod adalah seperti berikut: jika(kereta != null) {
//Lakukan operasi tertentu pada objek kereta
}



Malah, nilai yang tidak ditentukan diperoleh daripada nilai nol, jadi ECMA-262 menetapkan bahawa ujian kesamaan mereka harus kembali benar.


Salin kod

Kod adalah seperti berikut: alert(undefined == null); //true
Walaupun null dan undefined mempunyai hubungan ini, penggunaannya berbeza sama sekali. Dalam apa jua keadaan tidak perlu untuk menetapkan secara eksplisit nilai pembolehubah kepada tidak ditentukan, tetapi peraturan yang sama tidak digunakan untuk null. Dalam erti kata lain, selagi pembolehubah yang bertujuan untuk memegang objek sebenarnya tidak memegang objek, anda harus secara eksplisit membiarkan pembolehubah itu memegang nilai nol. Melakukannya bukan sahaja mencerminkan konvensyen null sebagai penunjuk objek null, tetapi juga membantu untuk membezakan lagi null dan undefined.

Jenis Boolean

Jenis ini hanya mempunyai dua nilai literal: benar dan salah. 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(), sebagai contoh:


Salin kod

Kod adalah seperti berikut: 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 secara automatik melaksanakan penukaran Boolean yang sepadan untuk memahami pernyataan kawalan aliran (seperti pernyataan if)

Sangat penting untuk berubah, contohnya:

Salin kod Kod adalah seperti berikut:

var message = 'Hello World';
Jika(mesej)
{
alert("Nilai adalah benar");
}

Apabila anda menjalankan contoh ini, kotak amaran akan dipaparkan kerana 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.

Salin kod Kod adalah seperti berikut:

makluman(NaN == NaN); //salah

Terdapat fungsi isNaN() dalam JavaScript Fungsi ini menerima parameter, yang boleh daripada sebarang jenis, dan fungsi itu akan membantu kami menentukan sama ada parameter itu "bukan nilai angka". 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:
Salin kod Kod adalah seperti berikut:

makluman(isNaN(NaN)); //benar
alert(isNaN(10)); //false(10 ialah nilai berangka)
alert(isNaN("10")); //false (boleh ditukar kepada nilai berangka 10)
alert(isNaN("biru")); //true (tidak boleh ditukar kepada nilai berangka)
alert(isNaN(true)); //false (boleh ditukar kepada nilai 1)

Terdapat tiga 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 ia ialah nilai Boolean, benar dan salah akan digantikan dengan 1 dan 0 masing-masing
● Jika ia adalah nilai berangka, hanya masukkannya dan pulangkan
● 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 terkemuka ialah Abaikan )
○ Jika rentetan mengandungi format titik terapung yang sah, seperti "1.1", ia akan ditukar kepada nombor titik terapung yang sepadan (begitu juga, pendahuluan 0 juga akan diabaikan)
○ Jika rentetan mengandungi format perenambelasan yang sah, seperti "0xf", tukarkannya kepada nilai integer perpuluhan dengan saiz yang sama
○ Jika rentetan itu kosong, tukarkannya kepada 0
○ Jika rentetan mengandungi aksara selain daripada format di atas, tukarkannya kepada NaN

● Jika ia adalah objek, panggil kaedah valueOf() objek, dan kemudian tukar nilai yang dikembalikan mengikut peraturan sebelumnya. Jika hasil penukaran ialah NaN, kaedah toString() objek dipanggil, dan kemudian nilai rentetan yang dikembalikan ditukar mengikut peraturan sebelumnya.

Salin kod Kod adalah seperti berikut:

var num1 = Number("Hello World"); //NaN
var num2 = Number(""); var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Nombor(benar); //1

Oleh kerana 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

Salin kod Kod adalah seperti berikut:

var num1 = parseInt("1234blue"); //1234
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA"); //10 (heksadesimal)
var num4 = parseInt("22.5"); //22
var num5 = parseInt("070"); //56 (octal)
var num6 = parseInt("70"); var num6 = parseInt("70"); var num7 = parseInt("10",2); //2 (dihuraikan dalam binari)

var num8 = parseInt("10",8); //8 (dihuraikan dalam oktal)
var num9 = parseInt("10",10); //10 (dihuraikan dalam perpuluhan)
var num10 = parseInt("10",16); //16 (dihuraikan dalam heksadesimal)
var num11 = parseInt("AF"); //56 (octal)
var num12 = parseInt("AF",16); var num12 = parseInt("AF",16); //175

Serupa dengan fungsi parseInt(), parseFloat() juga menghuraikan setiap aksara bermula daripada aksara pertama (kedudukan 0). 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 parameter kedua.

Salin kod Kod adalah seperti berikut:

var num1 = parseFloat("1234blue"); //1234
var num2 = parseFloat("0xA"); var num2 = parseFloat("0xA"); 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 urutan aksara yang terdiri daripada sifar atau lebih aksara Unicode 16-bit, iaitu rentetan. Rentetan boleh diwakili dengan petikan tunggal (') atau petikan berganda (").


Salin kod Kod adalah seperti berikut:
var str1 = "Hello";
var str2 = 'Hello';

Panjang mana-mana rentetan boleh diperoleh dengan mengakses sifat panjangnya

Salin kod Kod adalah seperti berikut:
alert(str1.length); //Output 5

Terdapat dua cara untuk menukar nilai kepada rentetan. Yang pertama ialah menggunakan kaedah toString() yang terdapat pada hampir setiap nilai.

Salin kod Kod adalah seperti berikut:
var umur = 11;
var ageAsString = age.toString(); //String "11"
var dijumpai = benar;
var foundAsString = found.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, tidak perlu menghantar parameter apabila memanggil kaedah toString(). Walau bagaimanapun, apabila memanggil kaedah toString() nilai, anda boleh lulus parameter: asas nilai output.

Salin kod Kod adalah seperti berikut:
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"

Seperti yang anda boleh lihat daripada contoh ini, dengan menentukan asas, kaedah toString() akan menukar 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(), panggil kaedah ini (tanpa parameter) dan kembalikan hasil yang sepadan

● Jika nilainya nol, kembalikan "null"
● Jika nilai tidak ditentukan, kembalikan "undefined"

Salin kod Kod adalah seperti berikut:

nilai var1 = 10;
nilai var2 = benar;
var value3 = null;
nilai var4;
alert(String(value1)); //"10"
makluman(String(nilai2)); //"benar"
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.

Salin kod Kod adalah seperti berikut:

var o = Objek baharu();

Setiap tika Object mempunyai sifat dan kaedah berikut:

● pembina - memegang fungsi yang digunakan untuk mencipta 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(object)——digunakan untuk menyemak sama ada objek yang diluluskan adalah prototaip objek lain
● propertyIsEnumerable(propertyName) - digunakan untuk menyemak sama ada sifat tertentu boleh dikira menggunakan pernyataan untuk masuk
● toString()——Mengembalikan perwakilan rentetan objek
● valueOf() – Mengembalikan rentetan, angka atau perwakilan Boolean bagi objek. Biasanya sama dengan nilai pulangan kaedah toString().

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan