為什么在js當中沒有var就是全局變量


因為,在js中,如果某個變量沒有var聲明,會自動移到上一層作用域中去找這個變量的聲明語句,如果找到,就是用,如果沒找到,

就繼續向上尋找,一直查找到全局作用域為止,如果全局中仍然沒有這個變量的聲明語句,那么自動在全局作用域進行聲明,這個就

是js中的作用域鏈,也叫變量提升

 

代碼示例如下:

var data = 10;
function fn1() {
    var data = 100;
    alert(data);//此時的data為100
    fn2();
    alert(data);   //此時的data為10000
    function fn2() {
        data = 1000;
        fn3();
        function fn3() {
            data = 10000;
        }
    }
}
fn1();
console.log(data); //此時的data為10

 


由此可知,上面代碼中,fn1函數里面由於data用關鍵字var來聲明了,所以這里面的data職能找到函數里面的最頂層的var data進行賦值替換,而不會影響到外面用var 來聲明的data


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM