JS数组push操作后索引取值疑问:为何输出是Orange Red?
数组push方法与length属性的逻辑说明
我们一步步拆解代码的执行过程,就能明白最终输出的原因:
- 初始数组:
var color = ["Orange", "Blue", "Green"]
此时数组有3个元素,索引从0到2,对应的值分别是Orange、Blue、Green,数组长度color.length为3。 - 执行
color.push("Red"):push()方法的核心作用是在数组的末尾追加新元素,执行后数组变为["Orange", "Blue", "Green", "Red"],数组长度自动更新为4。 - 执行输出语句
console.log(color[0] + " " + color[color.length-1]):color[0]是数组的第一个元素,结果为Orange;color.length-1计算后是4-1=3,由于数组索引从0开始计数,索引3对应的就是刚添加的Red;
两者拼接后输出就是Orange Red。
你之前的误解在于,误以为push添加新元素后,color.length-1仍指向原来的最后一个元素Green,但实际上push会直接把新元素放到数组末尾,同时同步增加数组的length值,因此length-1会指向这个新的末尾元素。
内容的提问来源于stack exchange,提问作者Alok Sharma
相关产品推荐
相关产品推荐

