Rumah > Artikel > hujung hadapan web > Nota kajian jenis data JavaScript_kemahiran javascript
Terdapat 5 jenis data ringkas dalam ECMAscript, juga dikenali sebagai jenis data asas: Undefined, Null, Boolean, Number dan String. Terdapat juga jenis data yang kompleks - Objek.
Jenis Tidak Ditakrifkan
Apabila pembolehubah diisytiharkan menggunakan var tetapi tidak dimulakan, nilai pembolehubah tidak ditentukan. Seperti:
var number; document.write(number); //undefined
Jika pembolehubah tidak diisytiharkan, ralat berikut akan berlaku. Seperti:
document.write(str); //错误
Tetapi apabila dilaksanakan dengan typeof, nilai yang tidak ditentukan akan dikembalikan tanpa mengira sama ada ia diisytiharkan atau tidak. Seperti:
var num; document.write(typeof num); //undefined document.write(typeof str); //undefined
Jenis nol
Apabila menggunakan typeof untuk mengesan null, "objek" akan dikembalikan. Seperti:
var num = null; document.write(typeof num); //object
Malah, nilai yang tidak ditentukan diperoleh daripada nilai nol, jadi nilai tersebut akan kembali benar jika nilainya sama. Seperti:
alert(null == undefined); //true
Apa yang perlu diperhatikan di sini ialah selagi pembolehubah yang bertujuan untuk menyimpan objek itu sebenarnya tidak menyimpan objek, pembolehubah itu harus dibenarkan secara eksplisit untuk menyimpan nilai nol Ini akan membantu membezakan null dan undefined. Seperti:
var num1 = null; var num2; document.write(typeof num1 + " " + typeof num2); //object undefined
Jenis Boolean
Untuk menukar nilai kepada nilai Boolean yang sepadan, anda boleh menggunakan fungsi penukaran Boolean(). Seperti:
var str = "helloworld"; document.write(Boolean(str)); //true
Bab 3.4.4 dalam buku "Reka Bentuk Pengaturcaraan Lanjutan JavaScript" memberikan jadual pelbagai jenis data dan peraturan penukaran yang sepadan. Mungkin terdapat jenis berikut:
Selain diwakili dalam perpuluhan, integer juga boleh diwakili oleh nilai literal perlapanan atau heksadesimal Bit pertama nilai literal perlapanan mestilah 0, diikuti dengan urutan digit perlapanan (0~7). Seperti:
var str = "helloworld"; if (str){ document.write("hellothere"); } //hellothere
Dua digit pertama nilai literal heksadesimal mestilah 0x, diikuti dengan mana-mana digit heksadesimal (0~9 dan A~F). Seperti:
var num1 = 070; //八进制的56 var num2 = 032; //八进制的32 var num3 = 079; //错误的八进制(>7) var num4 = 09; //错误的八进制(>7)
Perkara penting untuk diperhatikan di sini ialah anda tidak boleh membandingkan nilai titik terapung tertentu. Seperti:
var num1 = 0xA; //十六进制的10 var num1 = 0xa; //也是十六进制的10(字母不区分大小写)
Julat nilai
Nilai maksimum dan minimum yang boleh diwakili oleh ECMAScript disimpan dalam Number.MAX_VALUE dan Number.MIN_VALUE. Untuk menentukan sama ada nilai adalah terhingga, gunakan fungsi isFinite(). Seperti:
var a = 0.1; var b = 0.2; if (a + b == 0.3){ document.write("you are right") } //因为0.1 加上0.2 实际上等于0.30000000000000004
NaN
0 dibahagikan dengan 0 akan mengembalikan NaN, nombor positif dibahagikan dengan 0 akan mengembalikan Infiniti, dan nombor kompleks akan mengembalikan -Infiniti. Kedua, NaN tidak sama dengan sebarang nombor, termasuk dirinya sendiri. Selain itu, fungsi isNaN() boleh membantu kami menentukan sama ada parameter ini "bukan nilai berangka". Seperti:
document.write(isFinite(Number.MAX_VALUE + Number.MAX_VALUE)); //false
Penukaran angka
Terdapat tiga fungsi yang boleh menukar nilai bukan angka kepada nilai angka: Number(), parseInt(), dan parseFloat().
document.write(isNaN("a")); //true; document.write(isNaN("324")); //false; document.write(isNaN(true)); //false; document.write(isNaN(false)); //false; document.write(isNaN(NaN)); //true;
Jika ia ialah nilai Boolean, benar dan salah akan ditukar kepada 1 dan 0. Jika ia adalah nilai berangka, ia tidak berubah. Jika ia adalah nilai nol, ia ditukar kepada 0.
Jika ia tidak ditentukan, mengembalikan NaN.Jika ia adalah rentetan, ikut peraturan berikut:
Jika hanya terdapat nombor, tukarkannya kepada nilai perpuluhan.
parseInt()的转换规则如下:
下面是具体的例子:
document.write(parseInt("fds")); //NaN document.write(parseInt("")); //NaN document.write(parseInt("1111112abc")); //1111112 document.write(parseInt("-1111112abc")); //-1111112 document.write(parseInt("+1111112abc")); //-1111112 document.write(parseInt("0xa")); //10 document.write(parseInt("0022.00009")); //22 document.write(parseInt("070")); //ECMAScript 3认为是56(八进制), ECMAScript 5认为是70(十进制)
另外需要注意的是,ECMAScript 5已经不具备解析八进制值的能力了所以为了消除这个问题,可以为这个函数提供第二个参数:转换时使用的基数(多少进制),具体如下:
document.write(parseInt("070",10)); //70 document.write(parseInt("070",8)); //56 document.write(parseInt("070",16)); //112
多数情况下,最好默认设置成10进制。
parseFloat()的转换规则如下:
下面是具体的例子:
document.write(parseFloat("421")); //421 document.write(parseFloat("0421.32.1")); //421.32 document.write(parseFloat("0xaafd")); //0 document.write(parseFloat("070")); //70 document.write(parseFloat("070abc")); //70 document.write(parseFloat("")); //NaN document.write(parseFloat("abc")); //NaN
String 类型
要把一个值转换成字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。如下:
document.write((533).toString(10)); //"533" document.write((0xa).toString(10)); //"10" document.write((0xa).toString(2)); //"1010" document.write((true).toString(10)); //"true" document.write((false).toString(10)); //"false"
另外需要注意的是,null 和 undefined 不能转换。
document.write((null).toString(10)); // document.write((undefined).toString(10)); //
如果不知道需要转换的数值是否是null 或者undefined 则应该使用转型函数String(),如果是null 会返回"null"如果是undefined 会返回"undefined"。如下:
document.write(String(null)); //"null" document.write(String(undefined)); //"undefined"
另外在下一篇文章中再详细介绍Object 类型。
以上就是关于JavaScript数据类型的简单介绍,希望对大家学习JavaScript数据类型有所帮助。