【发布时间】:2021-10-25 13:06:55
【问题描述】:
当在函数内部声明一个新的局部变量并将其分配给一个与数组相等的全局变量时,什么更好?
选项 1:使用展开运算符:
let globalArray = [1, 2, 4];
function add (arr, value) {
let newArray = [...arr];
newArray.push(value);
return newArray;
}
console.log(add(globalArray, "red"));
选项 2:不使用扩展运算符:
let globalArray = [1, 2, 4];
function add (arr, value) {
let newArray = arr;
newArray.push(value);
return newArray;
}
console.log(add(globalArray, "red"));
我看不出输出的差异。是否应该使用扩展运算符?
【问题讨论】:
-
第二个将改变全局数组,从而产生可观察的效果。因此,它是不纯的。 FP 力求纯度以控制副作用
-
旁注:
...不是,也不能是操作员。操作员不能做...所做的事情。 -
Copy array by value的可能重复
-
没有“更好”。您的 2 个代码 sn-ps 功能不同。一个改变全局变量,另一个不改变。你使用什么取决于你需要什么。
标签: javascript arrays function functional-programming