1. 程式人生 > >淺談JavaScript中3種變數定義方式

淺談JavaScript中3種變數定義方式

在ES6中新增了一些對變數名操作的語法。在以前的版本中,javascript中的變數只能由var去定義,而在ES6又增加了兩種新的定義方法,ES6中新增的兩個定義變數的方式都是塊級作用域,下面我來說一下javascript中三種定義變數的方式const, var, let的區別?1.var定義的變數可以修改,如果不初始化會輸出undefined,可以多次定義同一變數,不會報錯。
<script>
    var num = 100;
    var num2;
    num = 200;
    var num = 1000;
    alert(num);  //1000
</script>
2.const是塊級作用域,定義的變數不可以修改,而且必須初始化。
<script>
    //let和const都沒有變數提升,只有var有
    alert(num); //error
    const NUM= 100;
    //   NUM = 200;  //error
    //    const NUM2;     //error
    alert(NUM);
    //let和const都是塊級作用域
    const A= 55;
    function low(){
        const A= 100;
        alert(A);  //100 
    }
    alert(A);   //50
    low();
</script>
3.let是塊級作用域,函式內部使用let定義後,對函式外部無影響,定義的變數可修改。注:在ES6以前沒有塊級作用域,所以也就有了JavaScript變數穿透的問題。
<script>
    let num = 200;
    num = 300;
    function number(){
    //這個變數和外部變數的作用域不同
        let num = 1000;
        alert(num); //1000
    }
           
    alert(num);  //300
   //let和const都沒有變數提升,只有var有
    alert(num2);     //error
    let num2;
</script>
值的一提的是,在我以前寫了一篇文章淺談Javascript變數提升當中,我簡述了一下用var定義的變數都會把變數提升上面然後賦值undefined,在ES6中新增的const和let都不存在了,這一點要注意一下。這些就是var,const,let基本的使用,建議在開發中儘量不要使用var用定義變數,因為效能太差了,可以重複宣告變數,無法限制修改,沒有塊級作用域。而定義變數用let,定義常量使用const,定義常量用大寫字母命名,每個單詞用下劃線分開。因為這兩種定義變數的方式都是塊級作用域,且不可以二次定義相同的變數名,大大減少了開發中變數衝突的問題。