您的位置:首页 > Web前端 > JavaScript

var声明

2016-05-18 16:39 260 查看
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引擎存储在内存里。

除非确实需要全局变量,建议一般都采用局部变量。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息