第一眼看到這個(gè)題目時(shí)刀崖,腦海里的答案是[1,2,3]惊科,但是真正的答案是[1,NaN,NaN]
通常情況下,map 方法中的 callback 函數(shù)只需要接受一個(gè)參數(shù)亮钦,就是正在被遍歷的數(shù)組元素本身馆截。但這并不意味著 map 只給 callback 傳了一個(gè)參數(shù)。這個(gè)思維慣性可能會(huì)讓我們犯一個(gè)很容易犯的錯(cuò)誤蜂莉。
Array.prototype.map 傳遞3個(gè)參數(shù):
第一個(gè)參數(shù)代表當(dāng)前被處理的元素蜡娶,第二個(gè)參數(shù)代表該元素的索引,第三個(gè)參數(shù)是當(dāng)前數(shù)組
parseInt(string, radix)是用來(lái)解析字符串的映穗,使字符串成為指定基數(shù)的整數(shù)窖张,接受兩個(gè)參數(shù):第一個(gè)表示被處理的值,string參數(shù)不以0x和0開(kāi)頭時(shí)蚁滋,按10為基數(shù)處理宿接;第二個(gè)表示解析的基數(shù)
了解這兩個(gè)函數(shù)后,可以模擬一下運(yùn)行情況:
parseInt('1',0); radix為0時(shí)辕录,且string參數(shù)不以“0x”和“0”開(kāi)頭睦霎,按照10為基數(shù)處理。這個(gè)時(shí)候返回1走诞;
parseInt('2',1)副女;基數(shù)為1(1進(jìn)制),1進(jìn)制最大值不為1蚣旱,無(wú)法解析碑幅,返回NaN
parseInt('3',2);基數(shù)為2(2進(jìn)制)姻锁,最大值為1枕赵,無(wú)法解析猜欺,返回NaN
map函數(shù)返回的是一個(gè)數(shù)組位隶,所以最后結(jié)果為[1,NaN,NaN]
var xs = ['10', '10', '10'];
xs = xs.map(parseInt);
console.log(xs); // 輸出結(jié)果為(3) [10, NaN, 2]