JavaScript變量聲明

const,let,var的區別和用法spa

1.const——聲明一個只讀的常量,在聲明的時候給其賦初值,以後不能再進行賦值。code

1 const i = 0;
2 console.log(i);    //有輸出,爲0

若是對 i 進行再次賦值則會報錯,TypeError:Assignment to constant variableblog

1 const i = 0;
2 i = 5;
3 console.log(i);    //無輸出,報錯

2.var——用於聲明變量,聲明在方法外則爲全局變量,在方法內則爲局部變量,只能在方法內讀取。作用域

1 var i;
2 console.log(i);    //若是不賦初值,輸出爲undefined

若是聲明變量時沒有使用 var 關鍵字,則該變量必定爲全局變量。到那時在調用的時候有如下區別:io

若是時聲明在方法外的全局變量,在方法內能夠直接使用;若是該全局變量時聲明在方法內部的,則在方法外使用該變量時須要先調用方法,告知系統聲明瞭全局變量才能使用。console

須要特別注意的問題:沒有使用 var 關鍵字定義的全局變量沒有預編譯過程,因此若是把變量的使用放在定義以前則會報錯。編譯

1 alter(i);  //  i is not defined    
2 i = 1;

3.let——塊級做用域,方法內部使用 let 定義後對方法外沒有影響。function

let 時ES6新增的變量聲明命令,做用就是聲明一個局部變量。class

1 var a = [];
2 for(var i=0;i < 10;i++){
3 //循環內的計數變量 i 使用var定義爲全局變量,因此循環過程當中會不斷地對值進行覆蓋
4    a[i] = function (){
5       console.log(i);
6    }  
7 }
8 a[6]();    //最後的輸出是 10
var a = [];
for(let i=0;i < 10;i++){
//這裏的 i 使用let定義爲局部變量,就是隻在當前循環生效,因此每次進行循環的 i 都是新的變量,值不會進行覆蓋
    a[i] = function(){
        console.log(i);
    }
}
a[6]();  //最後的輸出是 6 
相關文章
相關標籤/搜索