当前位置:  开发笔记 > 编程语言 > 正文

javascript闭包和功能放置

如何解决《javascript闭包和功能放置》经验,为你挑选了2个好方法。

函数的放置是否会影响范围内的闭包性能?如果是这样,那么放置这些功能的最佳位置在哪里?如果不是,关闭的隐含关联是否有足够的理由将逻辑上的函数放在另一个地方?

例如,如果foo不依赖于localState的值,那么从foo访问localState的事实是否会影响foo的执行时间,内存使用等?

(function(){
    var localState;

    function foo(){
        // code
    }

    function bar(){
        // code
        return localState;
    }
})();

换句话说,这是一个更好的选择,如果是这样,为什么呢?

(function(){
    function foo(){
        // code
    }

    var localState;

    function bar(){
        // code
        return localState;
    }
})();

Darius Bacon在下面建议上面的两个样本是相同的,因为可以从块内的任何地方访问localState.但是,下面的示例foo在块外定义的示例可能是不同的情况.你怎么看?

function foo(){
    // code
}

(function(){

    var localState;

    function bar(){
        // code
        foo();
        return localState;
    }
})();

Claudiu.. 5

这两个片段都是等效的,因为它们都是在您正在创建的匿名函数的(相同)环境中定义的.我想你可以localStatefoo任何一种方式访问.

话虽这么说......如果你在创建的环境中有大量的变量,那么foo执行时间可能会受到影响,因为变量查找可能需要更长的时间.如果您在定义的函数中不再使用大量变量foo,并且foo也不需要它们,那么foo将导致它们不被垃圾收集,因此这也可能是一个问题.



1> Claudiu..:

这两个片段都是等效的,因为它们都是在您正在创建的匿名函数的(相同)环境中定义的.我想你可以localStatefoo任何一种方式访问.

话虽这么说......如果你在创建的环境中有大量的变量,那么foo执行时间可能会受到影响,因为变量查找可能需要更长的时间.如果您在定义的函数中不再使用大量变量foo,并且foo也不需要它们,那么foo将导致它们不被垃圾收集,因此这也可能是一个问题.



2> Andrew Hedge..:

狗,我希望声明的顺序将是JavaScript解释器抽象出来的东西.在任何情况下,如果存在性能差异,那么将其作为过早优化的祸害的海报就是最小的.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有