var v = "hello"; function f() { alert(v); var v = "byebye"; //函数作用域内的变量v【遮盖】了上层作用域变量v } /* function f() { var v;//声明提升 alert(v);//此函数与上述等价 v="byebye"; } */ f();//undefined alert(v);//hello
var v = "hello"; if (true) { alert(v);//hello var v = "byebye"; } alert(v);//byebye
两点注意事项:
1.JS的变量声明具有hoisting(提升)机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面。
2.JS是没有块级作用域的。函数是JavaScript中唯一拥有自身作用域的结构。
时间: 2024-10-12 17:05:01