Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将变量作为参数传递而不影响它_Javascript_Angularjs_Angular_Typescript - Fatal编程技术网

Javascript 将变量作为参数传递而不影响它

Javascript 将变量作为参数传递而不影响它,javascript,angularjs,angular,typescript,Javascript,Angularjs,Angular,Typescript,有时在typescript中,当我将变量作为参数传递到函数中并在函数中修改它时,原始变量也会修改,任何人都可以向我解释发生了什么 let mybrew :any[] = [ { id:5, materials:[-1,-1,-1,-1], price:16 }, ] console.log(mybrew); function bestBrew(abrow:any[]){ abrow.forEach(

有时在typescript中,当我将变量作为参数传递到函数中并在函数中修改它时,原始变量也会修改,任何人都可以向我解释发生了什么

let mybrew :any[] = [
    {
        id:5,
        materials:[-1,-1,-1,-1],
        price:16
        },

]
console.log(mybrew);
function bestBrew(abrow:any[]){
    abrow.forEach(
        e=>{
            for (let i = 0; i < e.materials.length; i++) {
            e.materials[0] += e.materials[i];
            }
        }
    )
}
bestBrew(mybrew);
console.log(mybrew);

可以对对象进行深度克隆

lent newbrew = JSON.parse(JSON.stringify(mybrew));
bestBrew(newbrew);


您面临的问题到底是什么?我不希望全局独家新闻(mybrew)中的变量发生更改,因此如果您不希望全局范围中的变量发生更改,则必须克隆要传递到函数中的参数值。因为它是一个要传递的数组,只需执行
newBrew=array.from(abrow)即可
并传入
newBrew
。阅读有关“按值传递”和“按引用传递”的内容。那会有帮助的`
lent newbrew = JSON.parse(JSON.stringify(mybrew));
bestBrew(newbrew);