变量声明提升

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>
<script>

    var v = "hello";
    function test (){
        console.log(v);
        var v = "world";
    }


    //    这段代码运行的结果是什么呢?
    //    答案是:undefined
    //    这段代码说明了两个问题,
    //    第一,function作用域里的变量v遮盖了上层作用域变量v。
    //    第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于:
//
//    var v = "hello";
//    function test (){
//        var v; //声明一个变量 声明提升,但是不会被赋值
//        console.log(v);
//        v = "world";
//    }
</script>

 

posted on 2018-11-30 16:55  xxcxxc  阅读(168)  评论(0编辑  收藏  举报