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

(写了好久)版权所有: 转载请 说明 出自 xixi兮兮 的简书  http://www.jianshu.com/p/4453346e78ef

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

懒得翻墙,现在还是一个英语渣  ,所以,国内  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

(写了好久)版权所有: 转载请 说明 出自xixi兮兮的简书  http://www.jianshu.com/p/4453346e78ef

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 5,610评论 0 6
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • 第三章 基本概念 3.1 语法 ECMAScript标识符一般采用驼峰大小写格式,也就是第一个字母小写,剩下的每个...
    小雄子阅读 3,669评论 0 1
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,455评论 0 4
  • 工作、生活中经常是越忙越容易乱,做了这项忘了那项,做完上一项又不记得下项是什么。明明有一大堆待完成的,却又不知道该...
    薛薛闲扯阅读 2,844评论 0 1