JS的数据类型,简单来说就是四基两空一对象,四基指的是Number、String、Boolean、Symbol,两空指的是undefined、null,对象就是Object咯,而函数、日期、数组等皆属于对象,其中Object是复杂数据类型,其他六种是简单数据类型,这篇文章简要总结一下简单数据类型,特别是在理解的过程中容易出错的地方。
1.Number
数字的几种写法:1.一般的整数写法,如134;2.一般的小数写法,如12.8;3.科学计数法,如12.453e3;4.十六进制写法,如0x3F,以0x开头;5.二进制写法,0b11,以0b开头;6.八进制写法,如012,以0开头。
几个特殊值:Infinity表示正无穷大,-Infinity表示负无穷大,NaN表示无法表示的数字,但是仍然是数字,例如0/0的结果就是NaN,同时要注意NaN并不等于NaN。
存储方式、范围、精度:在JS中,所有的数字都是采用64位浮点数的方式存储的,不存在整数、小数的区别,在64位浮点数的存储中,第1位存储正负号,中间的11位存储指数部分,后面的52位存储有效数字,在有效数字的存储部分,由于第1位总会是1,因此省略了这个1。如果将指数部分和有效数字部分拉满,就可以得到JS存储的最大值1.7976931348623157e+308,可以通过Number.MAX_VALUE得到;如果将指数部分的负方向拉满,有效数字为1,就可以得到JS存储的最小值5e-324,可以通过Number.MIN_VALUE得到。在JS中,最多只能得到52+1个二进制位表示有效数字,即2的53次方,对应的十进制是9后面15个零,因此JS只能精确表示15位有效数字以及开头小于90的16位有效数字。
2.String
写法:1.使用单引号,如'hi';2.使用双引号,如"hi";3.使用反引号,如`hi`。需要注意的是不能在单引号和双引号内打回车,但是可以在反引号中打回车,在反引号中使用回车可以返回原格式的内容。如需在单引号和双引号中使用换行、回车等,可以使用\n、\r等表示。在写字符串的时候,如果字符串内本身需要使用单引号或者双引号,则需要使用转义字符\,或者采用双引号包裹单引号、单引号包裹双引号、使用反引号的方式。
特点:1.length属性,定义一个字符串s,可以通过s.length得到字符串s的长度,注意几个特别之处:"\n\r\t".length返回3,"\\\\\\".length返回3,"".length返回0," ".length(中间有一个空格)返回1。2.可以通过下标的方式访问字符串内的各个字符,如s[0]可以访问字符串s的第一个字符。
3.Boolean
布尔值,只有两种值,要么true,要么false,但是在JavaScript中,一定要记住五个falsy值,所谓falsy值,就是类似于false但并不是false的值,这五个值分别是:undefined、null、0、NaN、""(空字符串)。
4.undefined和null
这两个值都表示空,本质上没有什么区别,但在一些细节上需要注意:
- 1.如果声明了一个变量,但是没有赋值,那么会默认为undefined。
- 2.如果一个函数没有定义return,那么函数返回值默认为undefined。
- 3.在习惯上,把非对象空值定义为undefined,对象空值定义为null。
5.Symbol
这是ES6新引入的数据类型,使用Symbol可以防止属性名的冲突,具体内容参见:阮一峰:ECMAScript6入门