淺談JavaScript中3種變數定義方式
阿新 • • 發佈:2019-01-07
在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是塊級作用域,定義的變數不可以修改,而且必須初始化。3.let是塊級作用域,函式內部使用let定義後,對函式外部無影響,定義的變數可修改。注:在ES6以前沒有塊級作用域,所以也就有了JavaScript變數穿透的問題。<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>
值的一提的是,在我以前寫了一篇文章淺談Javascript變數提升當中,我簡述了一下用var定義的變數都會把變數提升上面然後賦值undefined,在ES6中新增的const和let都不存在了,這一點要注意一下。這些就是var,const,let基本的使用,建議在開發中儘量不要使用var用定義變數,因為效能太差了,可以重複宣告變數,無法限制修改,沒有塊級作用域。而定義變數用let,定義常量使用const,定義常量用大寫字母命名,每個單詞用下劃線分開。因為這兩種定義變數的方式都是塊級作用域,且不可以二次定義相同的變數名,大大減少了開發中變數衝突的問題。<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>