澄清需要关于javascript中奇怪的双重赋值语法

时间:2014-02-23 10:08:14

标签: javascript angularjs

我有以下代码:

var $scope, modelValue;
modelValue = $scope.model = {};

任何人都可以解释这个双重赋值在javascript中意味着什么吗?

为什么需要第二次分配?

2 个答案:

答案 0 :(得分:4)

这一行modelValue = $scope.model = {};就像写这个:

$scope.model = {};
modelValue = $scope.model;

在编写表达式variable = expression时,在赋值之前计算表达式,因此从右到左计算此语句:

variable = (variable = expression) // inner expression

我找到了这个文档:http://msdn.microsoft.com/en-us/library/1w2h1k9x(v=vs.94).aspx

  

=运算符的行为与其他运算符相似,因此包含它的表达式具有值。这意味着您可以按如下方式链接赋值运算符:j = k = l = 0.在这种情况下,j,k和l等于零。

答案 1 :(得分:1)

使用此语句,您可以通过modelValue直接引用空对象,并将$scope命名空间/对象下的模型设置为同一对象。如果您需要取消引用模型,它应该通过直接引用更快。为了缩短(用两个变量引用同一个对象),你可以进行双重赋值。