Javascript 如何使函数直接调用自身?
我有这个我定义的函数,一旦它被定义,我就执行它。是否有一种方法可以一次性将定义和执行结合起来,因为这是唯一使用此函数的地方Javascript 如何使函数直接调用自身?,javascript,Javascript,我有这个我定义的函数,一旦它被定义,我就执行它。是否有一种方法可以一次性将定义和执行结合起来,因为这是唯一使用此函数的地方 $scope.examWatchCollection = function () { $scope.$watchCollection('[config.examStatusId, config.examTypeId]', function (newValue, oldValue) { if (_
$scope.examWatchCollection = function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
};
$scope.examWatchCollection();
你把问题复杂化了。简单地说,根本不创建函数
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function(newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
如果你仍然想要一个函数,你可以这样做
(function() {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function(newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
}());
第二个版本创建一个函数对象,然后立即调用它。通常,这用于限制代码段使用的变量的范围,因为JavaScript中没有块范围。但我坚信您应该选择第一个选项。如果您从未使用过它,那么您就不需要保留对它的引用。只需匿名定义并立即执行即可:
(function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
})();
(function () {
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
}());
在JavaScript中,函数是与任何其他对象一样的对象。您可以从其名称或函数本身的定义执行它。如果函数后面有括号,则将执行任何函数,无论是通过名称引用的函数还是内嵌定义的函数
完全不创建函数,只执行代码可能更简单:
$scope.$watchCollection('[config.examStatusId, config.examTypeId]',
function (newValue, oldValue) {
if (_o.checkWatch(newValue, oldValue)) {
_u.putConfigs($scope.config);
$scope.grid.backup = [];
$scope.grid.data = [];
}
});
那你为什么要把它分配给
examWatchCollection
呢?把(…)()
放在它周围?我不知道如何才能让它以其他方式运行。是的,不创建函数