我刚刚开始使用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']
最佳答案
不用像阿米特建议的那样使用库,这可以在本地完成,而无需安装巨大的库......
使用不带参数的.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
通过返回整个新数组来工作。
关于javascript - Node.js 中的变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676147/