Tôi biết rằng có rất nhiều chủ đề như thế này. Và tôi biết những điều cơ bản: .forEach()hoạt động trên mảng gốc và mảng .map()mới.
Trong trường hợp của tôi:
function practice (i){
return i+1;
};
var a = [ -1, 0, 1, 2, 3, 4, 5 ];
var b = [ 0 ];
var c = [ 0 ];
console.log(a);
b = a.forEach(practice);
console.log("=====");
console.log(a);
console.log(b);
c = a.map(practice);
console.log("=====");
console.log(a);
console.log(c);
Và đây là đầu ra:
[ -1, 0, 1, 2, 3, 4, 5 ]
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
undefined
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]
Tôi không hiểu tại sao lại sử dụng practicegiá trị thay đổi của bthành undefined.
Tôi xin lỗi nếu đây là câu hỏi ngớ ngẩn, nhưng tôi khá mới trong ngôn ngữ này và những câu trả lời tôi tìm thấy cho đến nay không làm tôi hài lòng.
.maptrả về một mảng mới , trong khi.forEachkhông trả về bất kỳ thứ gì . Về cơ bản, nếu bạn muốn lấy một dạng đã sửa đổi của mảng trước đó, bạn sử dụng.map, nếu không muốn, bạn sử dụng.forEach.