為什么會(huì)寫(xiě)這篇文章呢?看Vue文檔渲染函數(shù)
的時(shí)候發(fā)現(xiàn)一個(gè)問(wèn)題很好奇,Array.apply(null, { length: 20 })
為什么這樣定義數(shù)組?然后查閱資料做了一個(gè)小結(jié)記錄一下,麻雀雖小,五臟俱全。
Array.apply()
apply()在MDN
中解釋是這樣的:
func.apply(thisArg, [argsArray])
thisArg 必選的。在 func 函數(shù)運(yùn)行時(shí)使用的 this 值。請(qǐng)注意,this可能不是該方法看到的實(shí)際值:如果這個(gè)函數(shù)處于非嚴(yán)格模式下,則指定為 null 或 undefined 時(shí)會(huì)自動(dòng)替換為指向全局對(duì)象,原始值會(huì)被包裝。
argsArray 可選的。一個(gè)數(shù)組或者類(lèi)數(shù)組對(duì)象,其中的數(shù)組元素將作為單獨(dú)的參數(shù)傳給 func 函數(shù)。如果該參數(shù)的值為 null 或 undefined,則表示不需要傳入任何參數(shù)。從ECMAScript 5 開(kāi)始可以使用類(lèi)數(shù)組對(duì)象
function printArguments() {
console.log(arguments)
Array.prototype.forEach.call(arguments, function (item) {
console.log(item);
});
}
printArguments(undefined,undefined)
由此可見(jiàn){length:20}
是個(gè)類(lèi)數(shù)組
如argument
只提供了length
的屬性相當(dāng)于創(chuàng)建了一個(gè)長(zhǎng)度為20,每個(gè)元素為undefined
的數(shù)組
(20) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
new Array()
new Array(20)
和Array(20)
只是創(chuàng)建了一個(gè)長(zhǎng)度為20,元素是空的數(shù)組
(20) [empty × 20]
arr = []
let arr=[];
arr.length= 20
(20) [empty × 20]
由此可見(jiàn)new Array(20)
和let arr=[];arr.length= 20
等價(jià)
Array.from()
Array.from() 方法從一個(gè)類(lèi)似數(shù)組或可迭代對(duì)象創(chuàng)建一個(gè)新的,淺拷貝的數(shù)組實(shí)例。
Array.from({length:20})
(20) [undefined, undefined, undefined, undefined, undefined, undefined, undefi
文章來(lái)源:公眾號(hào)--小丑的小屋 作者:小丑
以上就是W3Cschool編程獅
關(guān)于Array.apply(),new Array(),arr =[] 三者的區(qū)別的相關(guān)介紹了,希望對(duì)大家有所幫助。