Rumah  >  Artikel  >  hujung hadapan web  >  Nota kajian jenis data JavaScript_kemahiran javascript

Nota kajian jenis data JavaScript_kemahiran javascript

WBOY
WBOYasal
2016-05-16 15:18:241346semak imbas

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:

  • Apabila jenis data ialah String, sebarang rentetan yang tidak kosong akan ditukar kepada benar;
  • Apabila jenis data ialah Nombor, kecuali 0 dan NaN yang akan ditukar kepada palsu, semua yang lain akan ditukar kepada benar;
  • Apabila jenis data ialah Objek, kecuali null, ia akan ditukar kepada benar;
  • Apabila jenis data Undefined, n/a akan ditukar kepada benar dan undefined akan ditukar kepada
  • Perlu diperhatikan di sini bahawa jika penyataan sering menggunakan penukaran Boolean yang secara automatik melaksanakan respons sebagai syarat. Seperti:

  • Jenis nombor

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:

Nilai titik terapung
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().

Peraturan penukaran Number() adalah seperti berikut:
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.


    Jika ia dalam format titik terapung, tukarkannya kepada nilai titik terapung yang sepadan. Sifar pendahuluan juga diabaikan.
  • Jika ia dalam format heksadesimal, ia akan ditukar kepada nombor perpuluhan.
  • Jika rentetan kosong, ia akan ditukar kepada 0.
  • Kes lain akan ditukar kepada NaN.
  • Lihat contoh di bawah untuk butiran:
  • parseInt()的转换规则如下:

    • 如果第一个字符不是数字字符或者符号,parseInt()会返回NaN。
    • 用parseInt()转换空字符串会返回NaN。
    • 如果第一个字符是数字字符,它会继续解析第二个字符,直到遇到了一个非数字字符.

    下面是具体的例子:

    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()的转换规则如下:

    • 与parseInt()类似,不同的是字符串第一个小数点是有效的,而从第二个小数点开始包括第二个小数点是无效的。
    • 他不能解析十六进制数值!!!
    • 他只能解析十进制数值!!!
    • 他没有用第二个基数来指定进制的用法。

    下面是具体的例子:

    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数据类型有所帮助。

Kenyataan:
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