在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' }