Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function Javascript-参数与嵌套函数与性能_Function_Arguments_Nested - Fatal编程技术网

Function Javascript-参数与嵌套函数与性能

Function Javascript-参数与嵌套函数与性能,function,arguments,nested,Function,Arguments,Nested,JavaScriptNoob问题-以下哪一项是最佳实践和性能友好的,也欢迎任何其他建议。这是原始项目的最简单版本。将有20多个变量和10多个内部函数(例如本例中的“进程”) 方法1的优点是它不需要向函数发送参数,而是将所有函数嵌套在主函数中(可能会为每个Foo实例重新生成所有内部函数)。虽然方法2没有函数嵌套,但需要很多参数。请注意,还会有多个Foo构造函数实例 方法1: function Foo () { var a = 1; var b = 2; var c = (a

JavaScriptNoob问题-以下哪一项是最佳实践和性能友好的,也欢迎任何其他建议。这是原始项目的最简单版本。将有20多个变量和10多个内部函数(例如本例中的“进程”)

方法1的优点是它不需要向函数发送参数,而是将所有函数嵌套在主函数中(可能会为每个Foo实例重新生成所有内部函数)。虽然方法2没有函数嵌套,但需要很多参数。请注意,还会有多个Foo构造函数实例

方法1:

function Foo () {
    var a = 1;
    var b = 2;
    var c = (a+b)/2;
    var $element = $('#myElement');

    var process = function (){
        var x = a+b+c;
        $element.css('left', x)
        return x;
    }   
    x = process ();
}
方法2:

function Foo () {
    var a = 1;
    var b = 2;
    var c = (a+b)/2;
    var $element = $('#myElement'); 
    x = process (a, b, c, $element);
} 

function process (a, b, c, $element){
    $element.css('left', x)
    return x;
}

分离的功能无疑是提高性能的途径。虽然在某些情况下,嵌套函数的变量作用域很好,但如果函数很大,性能影响可能很大

请记住,每次调用Foo if时,var进程都会为正在创建的新函数重新分配所有内存,而不是将函数保留在内存中,并向其传递新参数。如果函数很大,对于Javascript解释器来说,这将是一项非常艰巨的任务


以下是一些可能也会有所帮助的硬数字(包含性能比较和您可以在自己的浏览器中运行的实际基准):

实际上,浏览器甚至会优化嵌套函数,与外部范围中声明的函数相比,性能差异变得微不足道

我在博客上写了一篇文章来支持这一观点


编辑:测试被破坏,测试表明不嵌套函数更快。

是的,即使参数数量更多,分离函数也有更好的性能。谢谢你的回答。嗯。。。它们稍微有点差,但我认为这是浏览器的弱点。编写嵌套的代码会更好!我喜欢!我希望所有语言都支持这一点,并在使用非局部变量时对此进行优化。