簡體   English   中英

如何讓函數直接調用自身?

[英]How can I make a function directly call itself?

我有這個我定義的功能,一旦定義我執行它。 有沒有辦法可以一次性結合定義和執行,因為這是唯一使用此功能的地方?

    $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 = [];
        }
    });

如果你仍然需要一個功能,你可以像這樣制作一個IIFE

(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 = [];
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM