在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 關(guān)于js中arr的可變長度

關(guān)于js中arr的可變長度

題目描述

JS中Array是可變長的,如果沒有定義值默認(rèn)是undefined

相關(guān)代碼

var arr = [0,1,2]; 
arr[10]=10;
arr.filter(function(x){
    return x===undefined
})

期待結(jié)果

題目中只給arr設(shè)置了[0,1,2],然后設(shè)置arr[10]=10,此時(shí)的arr應(yīng)該是等于[0,1,2,undefined*7,10],然后對這個(gè)數(shù)組進(jìn)行過濾操作,會(huì)返回等于undefined的項(xiàng),即返回的應(yīng)該是[undefined*7]。但是實(shí)際的操作結(jié)果都是空函數(shù)[],然后在filter內(nèi)部輸出x,即

var arr = [0,1,2]; 
arr[10]=10;
arr.filter(function(x){
    console.log(x);
    return x===undefined
})

發(fā)現(xiàn)也只會(huì)輸出0,1,2,10。

看來MDN上面也沒有關(guān)于這個(gè)的解釋,所以希望大神能幫忙解答一下,你們將拯救一顆受傷的心靈于水生火熱之中,非常感謝大家。

回答
編輯回答
陌璃

其余元素都是空元素 并不是undefined filter map等方法會(huì)直接跳過空元素

2017年8月30日 01:58
編輯回答
練命

直接設(shè)定數(shù)組length并不會(huì)被es5的幾個(gè)包括(Array.prototype.forEach,Array.prototype.map,Array.prototype.filter,Array.prototype.reduce,。。)數(shù)組迭代方法循環(huán)。
之前我也不理解,但是在MDN看到它們的Polyfill,迭代的同時(shí)都通過 in 運(yùn)算符 判斷當(dāng)前迭代的索引是否在數(shù)組中。
而直接設(shè)定長度沒有設(shè)值的數(shù)組索引直接因?yàn)椴荒芡ㄟ^這個(gè)判斷被剔除了。

2017年10月21日 18:49