变量作为参数传递给函数和局部变量

时间:2019-05-22 07:20:55

标签: node.js

在node.js中使用队列时,我发现作为参数传递给函数和局部变量的变量的行为不同。 我将在函数中作为参数传递的变量的值分配给局部变量,然后在对局部变量执行任何操作时,两个变量的值也都更改为新值。虽然作为参数传递给函数的变量的值永远不会更改,直到我为其分配新的值为止。

为了更深入地了解这种行为,我使用了两个局部变量,但仍然发现了相同的输出

这是问题的示例代码:

HttpClient

以上代码的输出为:

var change_value = function (payload) {
    let value = payload;
    console.log('payload:', payload, '\nvalue:', value);
    value.color = 'black';
    console.log('payload:', payload, '\nvalue:', value);
    let new_value = value;
    console.log('payload:', payload, '\nvalue:', value, '\nnew_value:', new_value);
    delete new_value.color;
    console.log('payload:', payload, '\nvalue:', value, '\nnew_value:', new_value);
}

change_value({
    name: 'devil'
})

我想要/期望的输出是:

payload: { name: 'devil' } 
value: { name: 'devil' }

payload: { name: 'devil', color: 'black' } 
value: { name: 'devil', color: 'black' }

payload: { name: 'devil', color: 'black' } 
value: { name: 'devil', color: 'black' } 
new_value: { name: 'devil', color: 'black' }

payload: { name: 'devil' } 
value: { name: 'devil' } 
new_value: { name: 'devil' }

0 个答案:

没有答案