Rumah  >  Soal Jawab  >  teks badan

javascript - forEach tentang tatasusunan JS tidak boleh mengubah suai nilai elemen tatasusunan

// 第一种(数组forEach无法修改数组元素的值)
let testArr = [1, true, [], '4', {a: 1}];
testArr.forEach((value, index, arr) => {
    value = 6;
    // arr[index] = 6; 此处可以修改成功[6, 6, 6, 6, 6];
});
console.log(testArr); // 输出[1, true, [], '4', {a: 1}]

// 第二种(数组forEach能修改数组元素的属性值)
let objArr = [{a: 1}, {a: 2}, {a: 3}];
objArr.forEach((value, index, arr) => {
    value.a = 6;
});
console.log(objArr); // 输出[{a: 6}, {a: 6}, {a: 6}];

// 第三种(自己实现一个类似forEach的方法)
Array.prototype._forEach = function(callback, _this) {
    if (!_this) _this = this; 
    for (let key in _this) {
        callback.call(_this, _this[key], key, _this);
    }
}
// 调用方法时发现结果一样
// 顺便提问为什么不能写[1,2,3]只能写new Array(1, 2, 3),会报错
let newArr = new Array(1, 2, 3);
newArr._forEach((value, index, arr) => {
    value = 4;
});
console.log(newArr);

希望各位有空帮我解答一下,谢谢~
天蓬老师天蓬老师2704 hari yang lalu569

membalas semua(1)saya akan balas

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-24 11:37:57

    Sila cari: kaedah lulus parameter kaedah js. Parameter diluluskan mengikut nilai, yang bermaksud bahawa jenis asas menyalin nilai, dan jenis rujukan menyalin rujukan dan menghantarnya masuk.

    balas
    0
  • Batalbalas