use*_*995 5 arguments nested function
Javascript noob问题 - 以下哪项是最佳实践和性能友好,也欢迎任何其他建议.这是原始项目的最简单版本.将有20多个变量和10个以上的内部函数(例如:案例中的"过程").
方法1的优点是它不需要向函数发送参数,而是嵌入main函数内的所有函数(可能为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 ();
}
Run Code Online (Sandbox Code Playgroud)
方法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;
}
Run Code Online (Sandbox Code Playgroud)
分离的功能绝对是提高性能的最佳途径。虽然在某些情况下,嵌套函数的变量作用域很好,但如果函数很大,性能损失可能会很大。
请记住,每次调用 Foo 时,var 进程都会为正在创建的新函数重新分配所有内存,而不是将函数保留在内存中并仅向其传递新参数。如果函数很大,这对于 Javascript 解释器来说将是一项相当艰巨的任务。
以下是一些可能有帮助的硬数字(包含可以在自己的浏览器中运行的性能比较和实际基准测试):http: //jsperf.com/nested-functions-speed、http : //jsperf.com/nested -命名函数/5
归档时间: |
|
查看次数: |
1534 次 |
最近记录: |