作者:Perz | 来源:互联网 | 2023-10-11 19:21
1var a=5; var a; alert( a ) // 5我的理解:第一次var a:var a=5; ==>在内存中开辟空间a,a中保存了数字5。第二次var a:var a; ==>
1
| var a=5; var a; alert( a ) // 5 |
我的理解:
第一次var a:var a=5; ==>在内存中开辟空间a,a中保存了数字5。
第二次var a:var a; ==>在内存中开辟空间a,a中什么都没有。
程序从上至下,从左至右执行,所以最后弹出的是“第二次 var a”的结果,第二次 var a中,a没有保存值,所以是undefined。
但执行结果是5,请问一下alert为什么不是undefined?
当局部变量和函数参数同名时,该怎么理解呢?也和预解析有关系吗?
1 2 3 4
| function test(a){
var a=a||5;
alert(a)
} |
test() //没传参的话,就是5;传参的话就alert参数