【发布时间】:2014-10-08 16:34:25
【问题描述】:
我一直在关注 John Papa 和他的 Angular 风格指南建议。我喜欢将所有可用于视图的变量和方法放在控制器顶部并依靠 javascript 在运行时提升变量的想法。我显然不像我想象的那样理解提升。在下面的示例中,我希望将dumbValue 变量声明提升到$scope.dumbValue 赋值语句之上;
var app = angular.module('plunker', []);
app.controller('MainCtrl', [$scope, $http]);
function MainCtrl($scope,$http)
{
$scope.dumbValue = dumbValue;
var dumbValue = 'dumb';
}
但是在this Plunker 中你可以看到情况并非如此;选择 ng-model 值未初始化。 如果把赋值语句移到变量声明下,ng-model就被初始化了。
为什么 javascript 不将 var dumbValue 提升到分配上方,或者是它,我不理解 Angular 处理它的方式?
【问题讨论】:
-
嗨,变量像往常一样被提升。但与 JavaScript 的其余部分一样,赋值不会提升!这意味着,在这种情况下,您的
$scope.dumbValue将被分配为空/未定义。 -
如果您考虑一下,提升分配没有意义,因为 RHS 可能依赖于必须首先计算的其他值。
标签: javascript angularjs hoisting