将功能添加到$ scope的性能优势?

时间:2014-01-30 23:06:10

标签: javascript performance angularjs scope

向$ scope添加函数是否有一个主要的性能优势,不需要在$ scope上?

示例:

function myCtrl($scope){
    $scope.myFunc = function(){
        // my function on scope
        var four = myHelperFunc(2);
        return four;
    }

    function myHelperFunc(number){
        // my helper function
        return number * 2;
    }
}

function myCtrl($scope){
    $scope.myFunc = function(){
        // my function on scope
        var four = $scope.myHelperFunc(2);
        return four;
    }

    $scope.myHelperFunc = function(number){
        // my helper function on scope
        // is this better than the previous example?
        return number * 2;
    }
}

2 个答案:

答案 0 :(得分:2)

第一个更好,它将使用词法范围。第二个将使用堆上的对象状态内存。随着对象数量的增加,您将消耗更多内存以保留引用$scope.myHelperFunc

总而言之,我建议不要担心这一点,最好编写表达你正在做的事情的干净代码。在这个例子中,性能差异实际上是最小的,它取决于客户端实际供应商的JS引擎实现,而您无法真正控制。除非......它是服务器端代码。

答案 1 :(得分:0)

后者没有性能优势。最后,仍然会调用一个函数。不同之处在于您是否希望能够从UI调用辅助函数。在$ scope上,你可以编写一个调用它,在你控制访问的控制器内,只从你的函数调用它。它更像是API可见性问题,而不是性能问题。

相关问题