js中的数据类型
目录
JS 中的数据类型一共有 7 种:
- 基本类型(简单类型):数值(number)、字符串(string)、布尔值(boolean)、Symbol(ES6 种新增的一种)、null、undefined。
- 复杂类型(由简单类型组成):对象(object)。
数值(number)
整数与浮点数:JavaScript 内部,所有数字都是以 64 位浮点数形式储存。
数值精度:JavaScript 浮点数的 64 个二进制位,从最左边开始,是这样组成的。
- 第 1 位:符号位,
0
表示正数,1
表示负数,决定一个数的正负。 - 第 2 位到第 12 位(共 11 位):指数部分,决定数值的大小。 JavaScript 能够表示的数值范围为 2 的 1024 次方到 2 的-1023 次方(开区间),超出这个范围的数无法表示。
- 第 13 位到第 64 位(共 52 位):小数部分(即有效数字),决定数值的精度。 精度最多只能到 53 个二进制位,绝对值小于等于 2 的 53 次方的整数,即-253 到 253,都可以精确表示。
- 第 1 位:符号位,
数值的表示方法:
- 十进制:没有前导 0 的数值。
- 八进制:有前缀
0o
或0O
的数值,或者有前导 0、且只用到 0-7 的八个阿拉伯数字的数值。0xff // 255
- 十六进制:有前缀
0x
或0X
的数值。0o377 // 255
- 二进制:有前缀
0b
或0B
的数值。0b11 // 3
- 科学计数法:科学计数法允许字母 e 或 E 的后面,跟着一个整数,表示这个数值的指数部分。
123e3 // 12300
、123e-3 // 0.123
NaN:非数字,主要出现在将字符串解析成数字出现错误的场合。
5-'x' // NaN
NaN 不等于任何值,包括它本身。数值相关的方法:
parseInt()
将字符串转为整数,接收第二个参数(2~36),被解析值的进制。parseFloar()
将一个字符串转为浮点数。isNaN()
判断一个值是否为 NaN。isFinite()
返回一个布尔值,判断这只是否为正常的数值。除了Infinity
、-Infinity
、NaN
和undefined
这几个值会返回false
,isFinite
对于其他的数值都会返回true
。
字符串(string)
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
多行字符串实现:(字符串默认只能写在一行内。)
- 可以在每行末尾使用反斜杠。
- 使用运算符
+
- 运用多行注释的变通方法
- ES6 中添加一个方式,键盘 1 旁边的符号包围字符串,默认单行字符串末尾有空格
1 2 3
var a = `1234 6789` a.lenth = 9
反斜杠(\)转义符,在某些字符前面表示特殊含义,如
\n
表示换行。字符串可以被视为字符数组,可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从 0 开始),但是无法改变字符串。
length
属性返回字符串的长度,也是无法改变的。字符串中存在 unicod 字符时,会自动转为字面进行识别。
布尔值、null 与 undefined
- 布尔值只有“真(true)”与“假(false)”两个状态。
- 常用操作符:
&&
与(两者均为真);||
或(其中一者为真);!
非(相反); undefined
,null
,false
,0
,NaN
,''、
""(空字符串)如果是布尔值会被转为
false,其余都会被转为
true`.- 空数组([])、空对象({})对应的布尔值都是
true
.
- 常用操作符:
- null 和 undefined 很相似,都可以表示“没有”
区别:
- a. 变量没有赋值—-undefined。
b. 有一个对象 object,不想赋值—-null。
有一个非对象,不想赋值—-undefined(这两个是推荐用法,惯例)。 null
表示“空值”,undefined
表示“未定义”。
- a. 变量没有赋值—-undefined。
对象(object)
对象是一组“键名-键值对”(key-value)的集合,是一种无序的复合数据集合,可以理解为哈希表。{'key':'value','key':'value','key':'value',·······}
键名与键值:
- 键名是数值则会自动转为字符串
- 如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
- 对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据
属性的相关操作:
- 读取:两种方法:
a.点运算符obj.p
,数字键不能使用点运算符。
b.方括号运算符obj['p']
。
方括号内部可以使用表达式。
数字键不加引号会自动转成字符串。 - 赋值:
obj.foo = 'hello'
,obj['foo'] = 'hello'
。 - 查看:使用
Object.keys
查看一个对象本身的所有属性。 - 删除:使用
delete
命令即可删除一个属性,delete pbj.p // true
,删除成功返回 true。 - 属性是否存在:
in
运算符。'toString' in obj
,但是不能识别哪些属性是对象自身的,哪些属性是继承的。利用 hasOwnPorperty 方法判断,是否为自身属性。 - 属性遍历:利用
for...in
循环。- 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
- 它不仅遍历对象自身的属性,还遍历继承的属性。
- 读取:两种方法:
with 语句:格式如下:
js with (对象){ 语句; }
作用:操作同一个对象的多个属性时,提供一些书写的方便。(少用)