变量作用域

1:局部变量的优先级要高于同名的全局变量

var scope = "global"
function checkscope(){
    var scope=  "loacl";
    return scope;       
}
checkscope           //=>"loacl"

2:函数声明提前

<script>
    function test(o) {
        var i=0;
        if(typeof o == "object"){
            var j=0;
            for(var k=0;k<10;k++){
                console.log("k1:"+k);    //0~9
            }
            console.log("k2:"+k);         //10
        }
        console.log("j:"+j);              //0
    }
    var time = new Date();
    test(time)
</script>
<script>
    var scope = "global";
    function f() {
        console.log(scope);         //undefined
        var scope = "loacl";
        console.log(scope)         //loacl
    }
    f();
</script>

  你可能会误认为函数中的第一行会输出“global”,因为代码还没有执行到var语句声明局部变量的地方。其实不然,由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是谁,在函数体内局部变量遮盖了同名全局变量。尽管如此,只有在程序执行到var语句的时候,局部变量才会被真正赋值。

posted @ 2017-09-24 11:18  BluesQian  阅读(126)  评论(0编辑  收藏  举报