建议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来读取该元素值
posted @ 2019-12-25 10:06  KIU的博客  阅读(218)  评论(0编辑  收藏  举报