fre*_*hie 6 javascript performance variable-declaration
选项1:没有赋值的多个var
function MyFunction() {
var a = null;
var b = null;
....
var z = null;
a = SomeValue;
b = SomeValue2;
....
}
Run Code Online (Sandbox Code Playgroud)
选项2:一个var语句,没有赋值
function MyFunction() {
var a, b ..., z;
a = SomeValue;
b = SomeValue2;
....
}
Run Code Online (Sandbox Code Playgroud)
选项3:带赋值的多个var语句
function MyFunction() {
var a = SomeValue;
var b = SomeValue2;
....
var z = SomeValue26;
}
Run Code Online (Sandbox Code Playgroud)
使用特定选项有任何性能优势吗?原始类型赋值AND
对象引用赋值是否属实?
感谢您的输入.
要了解性能,首先应了解吊装.我们来看下面的代码:
var x = 1;
function bar(val) {
var returnVal = val * 2;
return returnVal;
}
function foo(val) {
var returnVal = 10;
returnVal *= bar(val);
return returnVal;
}
var y = foo(x);
console.log(y); // 20
Run Code Online (Sandbox Code Playgroud)
吊装基本上意味着JavaScript解释器会将变量声明"提升"到其范围的顶部.使这个例子看起来更像这样:
var x, y;
x = 1;
function bar(val) {
var returnVal;
returnVal = val * 2;
return returnVal;
}
function foo(val) {
var returnVal;
returnVal = 10;
returnVal *= bar(val);
return returnVal;
}
y = foo(x);
console.log(y); // 20
Run Code Online (Sandbox Code Playgroud)
因此,在您给出的示例中,选项2和3基本上会做同样的事情.由于解释器会将这些声明移到顶部.在那时,这是一个偏好的决定.很多人都避免做一些像var x, y, z;
说危险的事情.我个人而言,这样做.在我所处的任何范围内,我将在顶部声明所有变量,然后在下面使用它们.但无论哪种方式都有效
现在,你的第一个例子效率最低.吊装后它看起来像这样:
function MyFunction() {
var a, b, ... z;
a = null;
b = null;
...
z = null;
a = someValue;
b = someValue2;
...
z = someValueN;
}
Run Code Online (Sandbox Code Playgroud)
它基本上导致设置变量两次.