JS——作用域

Posted 雨落川下雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中唯一拥有自身作用域的结构

 

以上是关于JS——作用域的主要内容,如果未能解决你的问题,请参考以下文章

js 闭包

js中的词法作用域

js中的词法作用域

js 欺骗词法作用域

JS中函数的词法作用域

作用域和作用域链