我刚开始使用nodeJS,我在理解变量范围和引用方面遇到了一些困难。例如,在下面的代码中,即使切片是变量b,变量a也会被改变/被覆盖。我的问题是,如何将变量a复制到变量b而不引用它/覆盖变量a。
var a = ['a', 'b', 'c', 'd'];
var b = a;
b.splice(3,1);
console.log(a) //will display ['a', 'b', 'c'] instead of ['a', 'b', 'c', 'd']
答案 0 :(得分:1)
而不是使用像Amit建议的库,这可以在本地完成,而无需安装庞大的库......
使用没有参数的.slice()
var a = ['a', 'b', 'c', 'd'];
var b = a.slice();
b.splice(3,1);
console.log(a);
当您设置b = a
时,您不会创建新数组,而只是告诉b
保留对a
的引用。因此a
和b
实际上是在内存中引用相同的位置。 .slice
通过返回一个完整的新数组来工作。
答案 1 :(得分:0)
答案 2 :(得分:0)
答案 3 :(得分:0)
感谢您的帮助,但我找到了问题的答案。如果有人来到这篇文章并遇到同样的问题,你可以在这里找到解决方案Nodejs: how to clone a object