JavaScript中对数组迭代添加值的时候,数组的长度发生变化
下面的例子是初步接触js的时候写的函数小练习。
题目要求如下
按照Java的思维,在执行到数组越界那里的时候,本以为是数组下标会越界,但js中不存在数组的下标越界,js中的数组会根据给定的索引值进行长度的增加。
(代码中的注释是在我没发现这个问题之前添加的)
function is_auto_increment(){
//
document.write("this is an array which length is 5 <br />");
var number = 5;
var results = new Array(number);
var sum = 0 ;
//iterate through results
for(var i = 0 ; i <=results.length ;i++){
var result = prompt('enter '+ i +'th course score');
//if it's a NaN
if(isNaN(result)){
alert("please enter a number ! ")
}else {
var result_num = parseInt(result);
//if it's positive number
if(result_num >= 0){
//执行到这一行本该出错的代码却继续执行下去,而且length+1
results[i]=result_num;
sum+=results[i];
}else{
alert("please enter a positive number !")
}
}
}
document.write("this is an array which length is "+results.length+"<br");
}
总结来说:
问题在于JavaScript中数组跟其他编程语言不同,数组的长度是可变化的
比如:
var list = new Array(3);
给定这个数组的长度是3;当执行代码:
list[5] = 1
之后,数组的长度会增加至5。