关于JS中数组长度的问题

给数组赋值 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);
})();


NodeOS
浏览 2077回答 2
2回答

xufeng123456

直接点说,两个 undefined 是完全一样的。可以用java里的思想去理解,undefined是一个对象(常量)。第四行的undefined 是因为数组越界,js机制就给你返回一个这样的 常量,第六行返回的undefined 是你自己赋值的undefined。和js机制返回给你的常量是完全一样的。利用js可以验证: 在末行加上 alert(arr[2]===undefined); 返回的true "==="是全等

李晓健

第三行,弹出2,没什么好说的第4行,弹出undefined ,因为数组只有2个元素,你直接去取第三3个,也就是不存在,不存在的就是undefined第6行,弹出undefined,因为你在第5行里给数组添加了一个元素,你给的是undefined,所以第三个元素就是undefined第7行,弹出3,本来是2,你在第5行添加了一个,所以就是3了。
打开App,查看更多内容
随时随地看视频慕课网APP