建议12:不拘泥于数字下标
数组下标默认为大于或等于0的整数,不过JavaScript允许数组下标可以为任意表达式甚至为任意类型数据.但是如果该数组的下标都不是为大于或等于0的整数,那么求它的长度length为0
(1) 文本下标
var a = [] a[-1] =1 console.log(a[-1]); //1 console.log(a['-1']); //1 console.log(a.length); //0 a[true] = 1 console.log(a[true]); //1 console.log(a[1]); //undefined 视为对象属性看待,没有转换为1 console.log(a.length); //0 a["张三"] = 1 //以文本下标来存储元素的值 console.log(a["张三"]); //1 快速定位检索
(2) 二维数组下标
var a= [] a[0,0] = 1 a[0,1] = 2 a[1,0] = 3 a[1,1] = 4 console.log(a.length); //2 console.log(a[0]); //3 console.log(a[1]); //4
(3) 对象下标
对象也可以作为数组下标.JavaScript会试图把对象转换为数值,如果不行,就把他转换为字符串,然后以文本下标形式进行操作.
var a = [] //数组直接量 var b = function(){ //函数直接量 return 2 } a[b] = 1 //把对象作为数组下标 console.log(a.length); //长度为0 console.log(a[b]); //1 // 可以这样读取元素 var s = b.toString() //获取对象的字符串 console.log(a[s]); //1 利用文本下标读取元素的值 console.log(a.length); // 还可以这样设计下标 a[b()] = 1 //在下标处调用函数,返回值为2 console.log(a.length) // 返回值为2,所以相当于a[2] = 1,根据规则length可以求出 console.log(a[2]); //因此可以用2来读取该元素值