一、数组

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、星号、多字节字符等)

 

三、数字

(未完)