MDN web docs上面說:
map() 方法創建一個新數組,其結果是該數組中的 每 個 元 素 都調用一個提供的函數后返回的結果。
並舉了個例子:
var array1 = [1,4,9,16];
const map1 = array1.map(x => x *2);
console.log(map1);
打印結果為:
> Array [2,8,18,32]
而我這樣寫時:
var array1 = [1, 4, 9, 16];
const map1 = array1.map(x => {
if (x == 4) {
return x * 2;
}
});
console.log(map1);
打印結果為:
> Array [undefined, 8, undefined, undefined]
為什么會出現三個undefined呢?而不是我預期的[1,8,9,16]。
這樣寫只是增加了一個條件,即x的值為4時才乘以2,之所以會出現undefined,是因為map()方法創建了一個新數組,但新數組並不是在遍歷完array1后才被賦值的,而是每遍歷一次就得到一個值。所以,下面這樣修改后就正確了:
var array1 = [1, 4, 9, 16];
const map1 = array1.map(x => {
if (x == 4) {
return x * 2;
}
return x;
});
這里注意箭頭函數有兩種格式:
1.只包含一個表達式,這時花括號和return都省略了。
2.包含多條語句,這時花括號和return都不能省略。