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聲明的變量是作用于上下文的。