饥人谷技术博客

JavaScript中的几种数据类型

2017-04-16  本文已影响0人  赫鲁晓夫的玉米棒子

JavaScript定义了几种数据类型?哪些是原始类型?原始类型和复杂类型的区别是什么?
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number,String.
其中Boolen,Number,String为原始数据类型,Undefined,Null一般将其看为特殊值。
1种复杂数据类型:Object.
Object本质上是由一组无序的名值对组成的。
ES6中新出了一个Symbol类型
ECMAScirpt不支持任何创建自定义类型的机制,而所有值最终都将是上述7种数据类型之一。

alert( null == undefined);    //true

尽管nullundefined有这样的关系,但它们的用途完全不同。只要意在保存对象的变量还没有真正保存对象,就该明确的让该变量保存null值。这样不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分nullundefined

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 " "(空字符串)
Number 任何非零数字值(包括无穷大) 0 和 NAN
Object 任何对象 null
Undefined n/a(不适用) undefined
var intNum = 55;    十进制整数
var octalNum1 = 070;      八进制整数——56,第一位必须是 0 然后是八进制数字序列(0-7)
var octalNum2 = 079;      无效的八进制数值,解析为十进制79
var hexNum1 = 0xA;      十六进制整数——10,前两位必须是0x,后跟任何十六进制数字。其中,字母A~F可以大写也可以小写。
var hexNum2 = 0x1f;      十六进制整数——31

在进行算数计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值。
Number类型中也包含了浮点数。所谓浮点数就是该数值中必须包含一个小数点,并且小数点后面必须至少有一个数字,虽然小数点前面可以没有整数,但是不推荐这种写法。
ECMASctipt中通常会将小数点后面带有6个零以上的浮点数值转换为以 e 表示法表示的数值(如0.0000003会被转换成3e-7)。
浮点数值最高精度是17位小数,但在进行算数计算时其精确度远远不如整数。例如:

var a = 0.1;
var b = 0.2;
alert(a+b);    //0.30000000000000004

在大多数浏览器中能保存的最小数值为5e-324;最大数值为1.7976931348623157e+308。如果计算结果超出了这两个值,那么这个数值将自动转换为特殊的Infinity值,正无穷为Infinity,负无穷为-Infinity。Infinity是不能参与计算的数值,用isFinite()函数可以测试一个数值是否在最大和最小数值之间,如果在则返回true
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何涉及到NaN的操作都会返回NaN,并且NaN与任何值都不相等,包括NaN本身。通过isNaN()函数可以确定一个参数是否“不是数值”。

alert(isNaN(NaN));      //true
alert(isNaN(10));       //false(10是一个数值)
alert(isNaN("10"));     //false (可以被转换为数值10)
alert(isNaN("blue"));   //true (不可以被转换成数值)
alert(isNaN(true));     //false (可以被转换成数值1)
上一篇下一篇

猜你喜欢

热点阅读