ECMAScript 標準定義了 7 種數據類型: Number;String;Boolean;Symbol;Null;Undefined;Object 。通常,數值、字符串、布爾值、undefined和null這五種類型,合稱為簡單類型的值,即它們是最基本的數據類型,不能再細分了。對象則稱為復雜類型的值,因為一個對象往往是多個簡單類型的值的合成,可以看作是一個存放各種值的容器。(Symbol 和 object 類型,本文暫不涉及。)
1、number(數值)
(1)定義:根據 ECMAScript 標準,JavaScript 中只有一種數字類型:基于 IEEE 754 標準的雙精度 64 位二進制格式的值。它并沒有為整數給出一種特定的類型。簡單來說,JS中的所有數字都是以64位浮點數形式儲存,即使整數也是如此。PS:NaN,即非數值(Not a Number)是一個特殊的值,用于表示一個本來要返回數值的操作數未返回值得情況,設計此值的目的是防止出現拋出錯誤,導致代碼停止執行。NaN與任何值都不相等,包括其本身。
(2)例如:
var num1 = 10; //十進制console.log(num1);console.log(typeof num1);var num2 = 070; //八進制console.log(num2);console.log(typeof num2);var num3 = 0xA; //十六進制console.log(num3);console.log(typeof num3);
復制代碼
(3)類型轉換(number):
1>.Number()函數:Number() 函數把對象的值轉換為數字。如果參數無法被轉換為數字,則返回 NaN。如下圖所示:
console.log(Number(123));// 數字console.log(Number('123'));// 包含數字的字符串console.log(Number('123abc'));// 不含數字的字符串console.log(Number(''));// 特殊:空字符串console.log(Number(true));// 布爾值console.log(Number(false));// 布爾值console.log(Number(undefined));// undefinedconsole.log(Number(null));// null
復制代碼
2>.parseInt()函數:parseInt() 函數解析一個字符串參數,并返回一個指定基數的整數 。語法:parseInt(string, radix);。如下圖所示:
console.log(parseInt("17", 8));console.log(parseInt("015", 10));console.log( parseInt("F", 16));
復制代碼
3>.parseFloat() 函數解析一個字符串參數并返回一個浮點數。該函數指定字符串中的首個字符是否是數字。如果是,則對字符串進行解析,直到到達數字的末端為止,然后以數字返回該數字,而不是作為字符串。
console.log(parseFloat("3.14"));console.log(parseFloat("314e-2"));console.log( parseFloat("FF2"));
復制代碼
4>.通過 “-0”(減零)和“+”(取正)的方法,也可以達到類型轉換的效果。
console.log('123'- 0);console.log(+ '456');
復制代碼
2、string(字符串)
(1)定義:JS中字符串類型用于表示文本數據。它是由0或多個16位Unicode字符組成的字符序列。字符串可以由雙引號(")或單引號(')表示。
(2)例如:
var text1 = 'message';console.log(text1);console.log(text1.length);console.log(typeof text1);
復制代碼
(3)類型轉換(string)。
1>.String() 方法可把一個數據轉換為字符串,并返回結果。
console.log(String(123));// "數字"console.log(String(true));// "布爾"console.log(String(undefined)); // "undefined"console.log(String(null)); // "null"
復制代碼
2>.通過“+''”的方法,也可以轉換為字符串。
console.log(345 + '');// "數字"console.log(false + '');// "布爾"console.log(undefined + ''); // "undefined"console.log(null + ''); // "null"
復制代碼
(4)多行字符串的拼接:1>.兩個字符串之間用“+”拼接;2>.ES6語法,可用“``”進行拼接。
3、boolean(布爾值)
(1)定義:表示真偽的兩個特殊值,即true(真)和false(假)。PS:true不一定是1,而false也不一定是0.Boolean類型的值true和false是區分大小寫的,True和False(以及其他的混合大小寫形式)都不是Boolean值,只是標志符。
(2)例如:
var genuine = true;console.log(genuine);console.log(typeof genuine);var sham = false;console.log(sham);console.log(typeof sham);
復制代碼
(3)類型轉換。
1>.Boolean()函數可以將任意類型的值轉為布爾值。
console.log(Boolean(1));// "數字1"console.log(Boolean(0));// "數字0"console.log(Boolean('1')); // "字符串1"console.log(Boolean('0')); // "字符串0"console.log(Boolean( )); //空格console.log(Boolean('')); //空字符串console.log(Boolean(null)); // "null"console.log(Boolean(undefined)); // "undefined"
復制代碼
2>.通過利用感嘆號取反的方法,也可以將任意類型的值轉為布爾值。(此方法不適用于空格)
console.log(!!1);// "數字1"console.log(!!0);// "數字0"console.log(!!'1'); // "字符串1"console.log(!!'0'); // "字符串0"console.log(!!''); //空字符串console.log(!!null); // "null"console.log(!!undefined); // "undefined"
復制代碼
4、null 和 undefined
(1)定義:undefined 表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值。null 表示空值,即此處的值為空。
(2)例如:
var message;console.log(message);console.log(typeof message);var text = null;console.log(text);console.log(typeof text);
復制代碼
(3)undefined和null的區別:javaScript高級程序設計(第三部): 在使用var聲明變量但未對其加以初始化時,這個變量的值就是undefined。 null值則是表示空對象指針。簡單理解起來就是說,undefined指沒有賦值的變量,是非對象;而null通過typeof打印出來是object,可以看做暫不打算賦值的對象。
6、參考資料
(1)MDN:JavaScript 數據類型和數據結構
(2)阮一峰: JavaScript 教程 數據類型。
(3)JavaScript高級程序設計(第三版)。