两段JS代码的区别: <script type="text/javascript"> var a = "Hello"; function test(){ var a; alert(a); a = "World"; alert(a); } </script> <script type="text/javascript"> var a = "Hello"; function…
今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值就会失败. <html> <body> <script type="text/javascript"> var test = 5; //全局变量 function a() { var test = 3;//局部变量 test =test; }; func…
js中函数运行过程不仅仅是单纯的局部变量覆盖全局变量.和函数里面的声明情况有关. 比方: <script> var a =1; function test(){ alert(a); //a为undefined! 这个a并非全局变量.这是由于在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了.这说明了Javascript在运行前会对整个脚本文件的定义部分做完整分析,所以在函数test()运行前, //函数体中的变量a就被指向内部的局部变…