javascript - 关于JS数组的forEach无法修改数组元素的值
天蓬老师
天蓬老师 2017-05-24 11:35:57
[HTML讨论组]
// 第一种(数组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);

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

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
曾经蜡笔没有小新

请搜索:js方法参数传递方式。参数是按值传递的,也就是说基本类型是拷贝了一份值,引用类型是吧引用拷贝下来传递进去。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号