JS Array 的 Find() 返回值是一个引用

445 阅读1分钟

示例代码:

const p = [
{id: 1, title: 'iPad 4 Mini', price: 500.01, inventory: 2},
{id: 2, title: 'H&M T-Shirt White', price: 10.99, inventory: 10},
{id: 3, title: 'Charli XCX -Sucker CD', price: 19.99, inventory: 5}]


// 测试 find() 返回的是一份拷贝值 or 匹配元素的引用(内存地址)
function add(prod) {

const ret = p.find(elem => elem.id === prod.id);

// 修改 Find() 返回值
ret.inventory=9999888777;
}

add(p[0])

console.log(p);
/*
OutPut:
[
    {
        "id": 1, 
        "inventory": 9999888777,   // 原数组修改生效,属于传址调用
        "price": 500.01, 
        "title": "iPad 4 Mini"
    }, 
    {
        "id": 2, 
        "inventory": 10, 
        "price": 10.99, 
        "title": "H&M T-Shirt White"
    }, 
    {
        "id": 3, 
        "inventory": 5, 
        "price": 19.99, 
        "title": "Charli XCX -Sucker CD"
    }
]
*/