JS——作用域

    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中唯一拥有自身作用域的结构

原文地址:https://www.cnblogs.com/feile/p/5329772.html