我有以下代码:
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等于零。
答案 1 :(得分:1)
使用此语句,您可以通过modelValue
直接引用空对象,并将$scope
命名空间/对象下的模型设置为同一对象。如果您需要取消引用模型,它应该通过直接引用更快。为了缩短(用两个变量引用同一个对象),你可以进行双重赋值。