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
保存一个引用。 所以a
和b
实际上是在内存中引用相同的位置。 .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:如何克隆一个对象