二、值:
本章介绍JS中的几个内置值类型。
一)、数组:
-
不同于 强类型语言,JS中的数组可以容纳任何类型的值。
-
对数组声明后即可向其中加入值,不需要预先设定大小。
-
数组通过数字进行索引,但是它们也是对象,因此可以包含字符串键值对。
- 如果字符串键可以被强制类型转换为十进制数字的话,就会被当作数字索引来处理。
- 数组的数字索引进行过优化,因此还是应该使用对象存储键值对。
类数组:
类数组是一些类似数组的(可以通过数字索引)值,例如set、jQuery查询操作会返回DOM元素列表。
- 工具函数slice(...):Array.prototype.slice(...)
- ES6:Array.from(...)
二)、字符串:
字符串也是一种类数组(数字索引),有length属性以及indexOf(..)和concat(..)方法。
字符串推荐的索引方式是 charAt(..)函数。
- 字符串是不可变的,而数组是可变的。
- 字符串不可变是指 字符串的成员函数不会改变其原始值,而是 创建并返回一个新的字符串。而数组的成员函数都是在 其原始值上进行操作。
- 字符串的成员函数有时可以“借用”数组的成员函数,只需要字符串和数组的互相转换就可以实现。
- (字符串 o 数组:.split(""))
- (数组 o字符串:.join(""))
三)、数字:
JS中只有一种数值类型:number(包括“整数”和带小数的十进制数)。
- JS中实际上没有真正的整数,JS的number使用的是“双精度”格式的浮点数。
特殊数值:
1、不是值的值:
- null:空值,曾赋过值,但是目前没有值。
- undefined:没有值,指从未赋值。
null是一个 特殊关键字,不是标识符,不能将其当作变量来使用和赋值。
undefined是一个标识符,可以被当作变量来使用和赋值。
2、特殊的数字
-
NaN:”不是一个数字“,可以被理解为无效数值。
-
isNaN(..):工具函数,但并不是特别精确,所有不是数字的值都会被判错。
ES6中提供了 Number.isNaN(..)提供了更精确的值。
3、特殊等式:
ES6加入了新的工具方法 Object.is(..)来判断两个值是否绝对相等。
四)、值和引用:
JS中变量不可能成为指向另一个变量的引用。
- 简单值(即标量基本类型值)总是通过值复制的方式来赋值/传递。
- 复合值(对象、函数)总是通过引用复制的方式来赋值/传递。