为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS中数组长度的问题

关于JS中数组长度的问题

NodeOS 2016-03-17 23:17:27
给数组赋值 undefined后,数组length会增加,是不是说明第4行代码和第6行返回undefined的原理不同?能否从语言逻辑方面解释一下。(function(){     var arr = [1,null];     alert("数组的长度是:"+arr.length);     alert(arr[2]);     arr.push(undefined);     alert(arr[2]);     alert("数组的长度是:"+arr.length); })();
查看完整描述

2 回答

已采纳
?
xufeng123456

TA贡献4条经验 获得超2个赞

直接点说,两个 undefined 是完全一样的。

可以用java里的思想去理解,undefined是一个对象(常量)。

第四行的undefined 是因为数组越界,js机制就给你返回一个这样的 常量,

第六行返回的undefined 是你自己赋值的undefined。和js机制返回给你的常量是完全一样的。

利用js可以验证: 在末行加上 alert(arr[2]===undefined); 返回的true "==="是全等

查看完整回答
2 反对 回复 2016-03-19
  • NodeOS
    NodeOS
    用对象解释就容易理解了,谢谢!
?
李晓健

TA贡献1036条经验 获得超461个赞

第三行,弹出2,没什么好说的

第4行,弹出undefined ,因为数组只有2个元素,你直接去取第三3个,也就是不存在,不存在的就是undefined

第6行,弹出undefined,因为你在第5行里给数组添加了一个元素,你给的是undefined,所以第三个元素就是undefined

第7行,弹出3,本来是2,你在第5行添加了一个,所以就是3了。

查看完整回答
反对 回复 2016-03-18
  • 2 回答
  • 0 关注
  • 2076 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信