2014-02-15 41 views
0

我想了解更多关于lodash _.clone,我认为这是在一个对象中创建了一个数据副本并创建了一个不同的对象。然而,当我在控制台在测试我注意到了这一点:当我将变量赋值给另一个变量时,它不会将它们链接在一起吗?

var a = 88 
undefined 
var b = a 
undefined 
console.log(b) 
88 VM1010:2 
undefined 
var a = 100 
undefined 
console.log(b) 
88 

我期待看到的是,B。将100有人可以解释这对我来说。

更新:

这里是我有问题:

   $scope.grid.data = result; 
       $scope.grid.backup = _.clone(result); 

这似乎是,当我改变数据对象内的值,那么的.backup对象内的相应值的变化

+2

不,将'a'的_value_赋值给'b'不会链接变量。 – Teemu

回答

3

这就是变量在JavaScript和大多数语言中的工作原理。 b = a的分配将变量a分配给变量b。在可以将变量设置为对另一个变量的引用的语言中,通常会有特定的语法来执行此操作; JavaScript没有这个功能。

请注意,这可能会令人困惑,因为在对象的情况下,从ab分配的值是对该对象的引用,但这仍然不会“链接”变量本身,它只是“分“他们对同一个对象。修改任何一个变量(通过赋值)不会影响其他变量,但任何变化对象任一变量都将被两个变量镜像,因为它们同样指向同一个对象。

+0

我对此感到困惑的原因是因为我也有对象,我想我需要使用lodash _.clone来制作它们的副本,以便它们不被链接。你能评论这个吗? –

+0

@SophiaIsabella我做了,在我的第二段 – meagar

+0

刚刚更新了这个问题,以显示是什么让我对此感到困惑。 –

相关问题