Javascript 角度5中的变量范围

Javascript 角度5中的变量范围,javascript,angular,typescript,Javascript,Angular,Typescript,我知道这是个愚蠢的问题,但我想知道这个变量的确切范围 我已经尝试过跟踪,如果我对数据做了任何更改,响应也会改变 我尝试过以下方法: 私人响应; 私人数据; getdata(){ this.service.getdata().subscribe((res:any)=>{ 如果(res){ 这个响应=res; 这个数据=res; } }); } 如果我使用数据作为其他组件的输入参数并对其进行任何更改,我的this.response也会发生更改 我不确定如何保留以前的数据。这是因为响应和数据共享同一

我知道这是个愚蠢的问题,但我想知道这个变量的确切范围

我已经尝试过跟踪,如果我对数据做了任何更改,响应也会改变

我尝试过以下方法:

私人响应;
私人数据;
getdata(){
this.service.getdata().subscribe((res:any)=>{
如果(res){
这个响应=res;
这个数据=res;
}
});
}
如果我使用数据作为其他组件的输入参数并对其进行任何更改,我的this.response也会发生更改


我不确定如何保留以前的数据。

这是因为响应和数据共享同一个对象引用

if条件中的代码只是彼此的浅拷贝

this.response = this.data = res; 
因此,当您更改一个值时,另一个值也会更改

为了避免这种情况发生,您可以执行以下操作

this.data = Object.assign({},res);


有关浅拷贝和深拷贝的详细信息,请阅读

,如何避免?如何获得未更改的数据?
this.data = {...res}