var的使用
1,变量声明有无var的区别以及性能影响
对于es5及其以下版本的js,在声明变量时候,可以使用var,也可以直接写变量。两者是有区别的,有var根据情况可以定义全局变量或局部变量,无var则被认为是window下的全局变量。
1),两者区别:
//测试1
a1 = 1;
function test1(){
console.log('测试1:'+a1);
a1 = 2;
console.log('测试1:'+a1);
}
test1();
console.log('测试1:'+a1);
//结果 1 2 2
//测试2
a2 = 1;
function test2(){
var a2;
console.log('测试2:'+a2);
console.log('测试2:'+window.a2);
a2 = 2;
console.log('测试2:'+a2);
}
test2();
console.log('测试2:'+a2);
//结果 undefined 1 2 1
2),性能影响:
声明变量有var:
function test_var(){
var a = 'box';
var b = 'box';
var c = 'box';
var d = 'box';
var e = 'box';
return a+b+c+d+e;
}
console.log(test_var());
声明变量无var:
function test_var(){
a = 'box';
b = 'box';
c = 'box';
d = 'box';
e = 'box';
return a+b+c+d+e;
}
console.log(test_var());
经过多次测试,发现无var时浏览器执行时间要少于有var时。
但在实际开发中,依然建议采用var来声明变量,提高程序的严谨性避免出错。
2,全局变量与局部变量
var box = "box"; //全局变量
function getObj(){
return box;
}
console.log(getObj());
次测试图针对全局变量
function getObj(){
var box = "pox"; //局部变量
return box;
}
console.log(getObj());
次测试图针对局部变量
经过多次测试,浏览器分别执行有全局变量与局部变量的程序,前者所消耗的时间多余后者。
定义全局变量,改变量会存在内存中,用户关闭浏览器或手动销毁时才被销毁。如果定义局部变量,则在执行该函数时候变量才会被js引擎存储在内存里。
除非确实需要全局变量,建议一般都采用局部变量。