天天看點

js中用this,var,let 聲明的變量的差別

var xx;

function test(){
        var aa; //聲明一
        let bb;//聲明二
        this.cc;//聲明三

        //聲明一局部代碼塊
        {
            let dd;//聲明四     
        }   
}      
那麼,這三種方式有什麼差別呢?

**差別在于作用域不同。**

let 聲明的變量作用域為某個代碼塊。而代碼塊的長度可大可小。也就是說,當按聲明二的方式聲明一個變量時,該變量的作用範圍于為整個function語句。當按聲明四方式聲明一個變量時,該變量的作用範圍為局部的代碼塊。

var聲明的變量作用域為整個函數體(當按聲明一的方式聲明變量時);當var變量聲明在函數外,該var變量的作用域為**整個js檔案周期**(全局作用域)。

那麼,用this聲明的變量呢?

簡單地說,用this聲明的變量作用域也是全局的。如果執行個體化test函數   var p=new test()  那麼用p能通路test函數内的哪些變量呢?答案是隻有cc 。實際上this聲明的變量是作用于上下文的。      

繼續閱讀