JS中的 length, var i = [1,2]; i[length], 与 i.length, i["length"]的区别

(写了好久)版权所有: 转载请 说明 出自 ruoyuting的博客园  http://www.cnblogs.com/ruoyuting/

 

今天在看视频的时候,看到JS的数组与对象,以前一直模模糊糊,不清楚,现在趁着下午有时间,好好的弄清楚了

 懒得FQ,现在还是一个英语渣  ,所以,国内  http://www.w3school.com.cn 是这么解释的

 

 

首先:JS中的length,我们知道  定义 一个 数组,或者对象  length是常使用的,获得其长度的方法,无论是js,java, php 都是如此

但是在JS中 单独  alert(length);  打印出的就是:0

alert(typeof length); 打印:number  

说明  length  在js中没有被任何数组,对象 调用的时候,就是代表一个数字 0 

 

所以接下的问题好解释了  

 

定义一个  数组  var box = ["?",2,3,"?",2,3,"?",2,3,"?",2,3];
alert(box[length]); //打印:?

alert(typeof box[length]); //打印:string

 

定义一个  数组  var box = [1,2,3,"?",2,3,"?",2,3,"?",2,3];
alert(box[length]); //打印:1

alert(typeof box[length]); //打印:number

打印的都是 数组中 索引是0 的 元素的值,和元素的类型

 

重点:

length是一个数字 0 ,

var i = [1,2];  i[length]是 i 数组里的 索引为0 的元素

然后是i.length,我们知道 是i 数组中的长度,或者说元素个数。

 i["length"] 是数组中,下标(我读书的时候学的java,老师习惯了这么叫)、索引是length的元素(一般数字的下标,或者索引都是数字,但是在js中,数组也是对象类型,在数组中,i["length"]  = "一个字符串", alert( i["length"] )  打印出 “一个字符串” ,也是可以的,这时  length 是 它的键,一个字符串” 是它的值,键值对,键值对,就是这样来的,注意:

 var box = ["?",2,3];
box["length"] = "数字";

这么写是会报错的,会在控制台打印出  Uncaught RangeError: Invalid array length 

Uncaught Range Error: Invalid array length 

翻译(百度翻译):捕获的范围错误:无效的数组的长度

  有道翻译:未捕获范围错误:无效的数组长度

 

所以:

1.length 是一个数字 0  

2.var i = [1,2];  i[length] 是 i[0] , 数组中下标为0的元素

3.var i = [1,2];  i.length  是 i 数组的长度

4.i["length"] 是 i 数组中 键为 length 的元素 

 

回去试试,下面这段代码:

基础:

var box = ["?",2,3];
box[length] = "数字";
box["length"] = "数字";//demo.js:122 Uncaught RangeError: Invalid array length
alert(box);

 

进阶:(代码要自己试试才看的懂)

var box = [1,2,3];
alert(box[length]); //打印:1
alert(typeof box[length]); //打印:number
// alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
box[length] = "数字";
alert(box.length);//3
alert(box);

var box = ["?",2,3];
alert(box[length]); //打印:?
alert(typeof box[length]); //打印:string
// alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
box[length] = "数字";
alert(box.length);//打印:3
alert(box);//打印:数字,2,3

//打印: 3 数字,2,3
alert(box[length]);//可能是把box的索引0的内容打印出来了 box[length] 这个length是数组长度吗?

alert(length); //打印:0
alert(typeof length); //打印:number

var box = ["?",2,3,"?",2,3,"?",2,3,"?",2,3];
alert(box[length]); //打印:?
alert(typeof box[length]); //打印:string

var box = [1,2,3,"?",2,3,"?",2,3,"?",2,3];
alert(box[length]); //打印:1
alert(typeof box[length]); //打印:number

// alert(typeof box[num]); // 报错:Uncaught ReferenceError: num is not defined
box[length] = "数字";
alert(box.length);//打印:3
alert(box);//打印:数字,2,3

//可能是把box的索引0的内容打印出来了 box[length] 这个length是数组长度吗?不是
alert(length); //打印:0 说明 length 没有被 对象. 的时候,就是 数字0

 

(写了好久)版权所有: 转载请 说明 出自 ruoyuting的博客园  http://www.cnblogs.com/ruoyuting/

posted on 2017-11-25 16:16  ruoyuting  阅读(1050)  评论(0编辑  收藏  举报

导航