Angular $ scope.$ watch newVal!== oldVal

use*_*164 3 javascript angularjs

我一直在做一个我继承的角项目,我无法联系原作者.有这个表达我不确定,我想知道是否有人可以帮我理解代码:

$scope.$watch(calculator.value, function(newVal, oldVal) {
    if(newVal !== oldVal) {
        i = newVal;
        updateCalculation();
    }
});
Run Code Online (Sandbox Code Playgroud)

令我困惑的是这行代码:newVal !== oldVal.知道为什么需要这样的检查吗?

Rea*_*lar 7

$watch范围的方法将始终至少执行一次回调.它第一次执行新旧值是相同的.

$scope.$watch(calculator.value, function(newVal, oldVal) {
    if(newVal === oldVal) {
       console.log('First time watcher is executed');
    }
    if(newVal !== oldVal) {
       console.log('Watcher called because values changed.');
    }
});
Run Code Online (Sandbox Code Playgroud)

您提供的示例表明它只会updateCalculations()在值发生更改时执行.这不是第一次召唤观察者.