以下两个功能之间是否有任何性能差异:
countryname sumval
Franch 1
India 2
哪个执行时间更短?
答案 0 :(得分:1)
我认为没有性能差异,但是第二个功能对于可读性更好,因为您不必缩进。您也可以在第二个函数的if语句中使用!a
,以提高可读性。
答案 1 :(得分:0)
在页面加载和执行该函数时,第二个函数解析和运行的时间应该比第一个少。
在页面加载时,解释器必须遍历所有文本,检查其语法是否有效,从结果构造一个抽象语法树,并(在较新的引擎上)将结果编译为机器代码。即使大多数a
函数体从未执行过 ,仍必须对其进行解析。解析一百万行Javascript是一项艰巨的任务。
当每个函数被执行时,a
可能比b
花费更多的时间,即使只是一点点-例如,如果a
在这些行中定义了许多变量,变量范围为a
:
function a() {
var a = false;
if(a) {
var b = 'b';
var c = 'c';
// more lines
}
}
运行该函数时,解释器必须查看if
块中定义的所有永不运行的变量,以便可以正确初始化这些变量名。运行该函数时,var b;
和var c
;其他所有var
都将悬挂在顶部:
function a() {
var a;
var b;
var c;
// initialize any other variables local to this function
a = false;
if(a) {
b = 'b';
c = 'c';
// more lines
}
}
如果要初始化的变量很多,这可能导致该函数花费的时间比没有要初始化的变量长。
相反,该函数没有多余的变量可初始化,也没有太多行可解析:
function b() {
var a = false;
if (a != true) {
return;
}
}
将被解析,编译并运行得更快。