本文实例讲述了JS变量提升。分享给大家供大家参考,具体如下:
该篇介绍什么是变量提升,写给像我一样的JS新手看的
简单来说变量提升就是 JS会把var变量的声明自动提升到作用域的顶部,即使你不想这样
一个例子: (局部变量与全局变量同名时 , 局部变量覆盖全局变量)
1 2 3 4 5 6 7 8 | var a= "全局变量" ; function test() { document.writeln(a); var a= "局部变量" ; document.writeln(a); } test(); |
undefined局部变量
第一个输出并没有输出全局变量a而是undefined ,这就是变量提升导致的
上例等同与下例:
1 2 3 4 5 6 7 8 9 | var a= "全局变量" ; function test() { var a; document.writeln(a); a= "局部变量" ; document.writeln(a); } test(); |
即变量声明会自动提升到作用域的顶部, 即使该语句并没执行
如下例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var x=100; var y=200; function test() { document.writeln(x); document.writeln(y); if ( false ) { var x=1; } return ; var y=2; } test(); |
1 | undefinedundefined |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var x=100; var y=200; function test() { var x,y; document.writeln(x); document.writeln(y); if ( false ) { x=1; } return ; y=2; } test(); |
用let变量!let变量执行到定义部分才会装载,具体用法请自行查询!