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) 编辑 收藏 举报