当我将变量分配给另一个变量时,它是不是将它们链接在一起?

时间:2014-02-15 14:29:52

标签: javascript

我试图找到更多关于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对象中发生变化

1 个答案:

答案 0 :(得分:3)

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

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