- js 变量的三个重要点:
1. js 无块级作用域,大家都懂的;2. 局部变量声明提前:
因为没有块级作用域,所以 js 里局部变量的声明会提前到函数最开始的地方(但是初始化不会提前,切记);
3. js 允许变量重复声明:
同一个作用域上的相同的变量名,后者会覆盖前者;不同作用域之间不会影响(既:如果局部变量名和全局的重复,互不影响)
代码示例:
<!-- 1、2、3 示例 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript"> var param = "全局1"; var param = "全局2"; (function test() { alert("第一次 alert:" + param); { var param = "局部"; // 无块级作用域, 第一次 alert 的就是这里声明的 param; // 只是声明提前, 但是初始化还是在这个位置,所以第一次 alert 的值是 undefined; // 这里初始化以后,第二次 alert 的才是 "局部" } alert("第二次 alert:" + param); })(); alert("第三次 alert:" + param); // 虽然调用了 test, 但是不影响全局 param 的值, 所以第三次 alert 是 "全局" // 全局声明两次 param, 但是 alert 的是 第二次的 "全局2" </script> </body> </html>