我确信有一个简单的答案,虽然我只有PHP的经验.为什么"披萨"阵列在我将其传递给我的"my_pizza"功能时只会更改为"my_pizza"?如何将原始数组保存到函数外部的函数中?功能运行完毕后,披萨阵列应该没有改变.我注意到,如果我更改了我的字符串变量(pie),它将在函数运行后保持不变,与数组不同.
简而言之,我希望第一组结果与第二组完全相同.
var pizza = [];
pizza.push('crust');
pizza.push('ham');
var pie = "apple"
function bake_goods(my_pizza, my_pie){
console.log(my_pizza);
console.log(my_pie);
delete my_pizza['1'];
my_pie = "peach";
console.log(my_pizza);
console.log(my_pie);
}
//first run
bake_goods(pizza, pie);
//console logs
//['crust','ham']
//apple
//['crust']
//peach
//second run
bake_goods(pizza, pie);
//console logs
//['crust']
//apple
//['crust']
//peach
Run Code Online (Sandbox Code Playgroud)
你应该在你的函数中克隆(创建一个)你的数组
function bake_goods(my_pizza, my_pie){
var innerPizza = my_pizza.slice(0);
console.log(innerPizza);
console.log(my_pie);
delete innerPizza ['1'];
my_pie = "peach";
console.log(innerPizza );
console.log(my_pie);
}
Run Code Online (Sandbox Code Playgroud)