2014-02-23 65 views
1

需要约奇双赋值语法我有以下代码:澄清在JavaScript

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

谁能请解释这双重分配在JavaScript是什么意思?

为什么需要第二个作业?

+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等于零。

+0

有趣的...你能否确认'$ scope.model = {};'指令是首先被评估的? – balteo

+2

我确认:) –

+0

谢谢Ilan。我正在接受答复。 – balteo

1

有了这个说法,你必须通过modelValue直接引用空对象和$scope命名空间/对象下的模型设置为同一个对象。如果您需要取消引用该模型,则应通过直接引用更快。为了缩短事情(用两个变量引用同一个对象),你做了一个双重任务。