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高级程序设计(第三版)。