我试图找到更多关于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对象中发生变化
答案 0 :(得分:3)
这就是变量在JavaScript和大多数语言中的工作方式。 b = a
的分配将变量a
的值分配给变量b
。在您能够将变量设置为对另一个变量的引用的语言中,通常会有一个特定的语法来执行此操作; JavaScript没有此功能。
请注意,这可能会让人感到困惑,因为在对象的情况下,从a
分配给b
的值是对象的引用,但这仍然没有“链接”变量本身,它只是将它们“指向”同一个对象。修改任一变量(通过赋值)都不会影响另一个变量,但是对象到任何变量都会被两个变量镜像,因为它们同样指向同一个对象。