Javascript AngularJS$timeout调用函数vs匿名函数vs表达式

Javascript AngularJS$timeout调用函数vs匿名函数vs表达式,javascript,angularjs,timeout,Javascript,Angularjs,Timeout,结果:13425 根据调用顺序,结果应为12345。 立即执行以下行: var four = function() { $scope.text += '4'; } var five = function() { $scope.text += '5'; } $scope.text = '1'; $timeout(function () { $scope.text += '2' }); $timeout($scope.text += '3'); $timeout($

结果:13425

根据调用顺序,结果应为12345。 立即执行以下行:

var four = function() {
    $scope.text += '4';
}

var five = function() {
    $scope.text += '5';
}

$scope.text = '1';

$timeout(function () {
    $scope.text += '2'
});

$timeout($scope.text += '3');

$timeout($scope.$eval(four));

$timeout(five);
如果添加如下所示的时间参数,则忽略时间

$timeout($scope.text += '3');
$timeout($scope.$eval(four));
$timeout($scope.text+='3')

在这一行中,
$scope.text+=“3”
不是一个函数,而是一个表达式。因此它将在
$scope.text='1'之后执行

要延迟语句,需要用函数包装该语句,并将其传递给
$timeout
setTimeout
。你不能推迟陈述

替换
$timeout($scope.text+='3')$timeout(function(){$scope.text+='3'})的code>
。 您将获得输出
14235

$scope.$eval()
同步计算函数或表达式,因此
4
将在
235
之前添加。 改成

$timeout($scope.text += '3', 1000);
$timeout($scope.$eval(four), 1000);

将获得预期的输出
12345

,这就是JavaScript的工作方式。这就是为什么
$timeout
需要一个函数“内联命令”是什么?我要指的是表达式。我确定了标题。
$timeout(function(){$scope.$eval(four)})