nodejs中的variables作用域

我刚开始使用nodeJS,并且在理解variables范围和引用时遇到一些困难。 例如,在下面的代码中,variablesa将会改变/被覆盖,即使切片被设置为variablesb。 我的问题是,如何将variablesa复制到variablesb中而不引用它/覆盖variablesa。

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'] 

而不是使用像艾米特build议的图书馆,这可以本地完成,没有安装一个巨大的图书馆…

使用.slice()而不带参数

 var a = ['a', 'b', 'c', 'd']; var b = a.slice(); b.splice(3,1); console.log(a); 

当你设置b = a ,你并没有创build一个新的数组,你只是告诉b保存一个引用。 所以ab实际上是在内存中引用相同的位置。 .slice通过返回一个完整的新数组来工作。

你正在寻找的function是深层克隆或深层复制。

有几种方法可以做到这一点,例如你可以使用lodash :

 var _ = require('lodash'); var a = ['a', 'b', 'c', 'd']; var b = _.cloneDeep(a); 

你可以使用切片

b = a.slice(0);

或者你可以使用concat

b = [] .slice(0);

对象也有对象的扩展方法。

和下划线库中的克隆方法

感谢您的帮助,但我find了我的问题的答案。 如果有人来这个post,并有同样的问题,你可以在这里find解决schemeNodejs:如何克隆一个对象