一、数组
1、可以容纳任何类型的值,声明后即可向其中加入值,不需要预先设定大小。
2、使用delete可以将单元从数组中删除,但length不发生变化。
3、创建“稀疏”数组(sparse array,即含有空白或空缺的数组)时要注意:“空白单元”的值,相当于已声明(var)但未定义(赋值),所以会显示为undefined;
var arr = []; arr[0] = 1; arr[2] = 2; // 未设置arr[1] arr[1]; // undefined
4、数组也是对象,不仅能用数字做索引,也能用字符串做键值,但如果该字符串键值能被强制转换为十进制数字的话,会被当作数字索引来处理。
var a = []; a["13"] = 42; // 42 a.length; // 14 a[13]; // 42
如果是用数字来排序的就对数组,含有非数字的值做索引的就用对象。
5、类数组
顾名思义不是标准的数组,只是和数组一样可以用数字做为索引,也能用数组的方法来操作的,类似数组的。。东西
ES6里有个强大的工具函数可以将类数组转换为真正的数组。Array.from()
function foo() { var arr = Array.prototype.slice.call(arguments); arr.push('c'); console.log(arr); } foo('a','b'); // ['a','b','c'] 用var arr = Array.from(arguments);替换能得到一样的结果
Array.from(..)还有其它强大的功能,在下卷介绍
二、字符串
1、字符串也有length属性及indexOf()、concat()方法,类似数组,但不是
2、字符串不可变,是指不可改变原始值,而是创建一个新的字符串返回,数组则是在原始值的基础上改变。
3、可以变通的借用数组的函数来处理简单的字符串:
如反转函数reverse(),因为字符串是不可变的所以调用这个方法结果是undefined,但可以先将字符串转为数组(.split),再进行反转(.reverse),最后再拼接回字符串即可(.join)。
仅限于对简单的字符串可用,包含复杂字符的字符串不适用(unicode、星号、多字节字符等)
三、数字
(未完)