ES6的六種宣告變數方法
阿新 • • 發佈:2020-12-08
ES5 只有兩種宣告變數的方法:var
命令和function
命令。
ES6 除了新增let
和const
命令,還有兩種宣告變數的方法:import
命令和class
命令。
所以,ES6 一共有 6(var,function,let,inport,class,const) 種宣告變數的方法。
(1) var命令。
var a ; //undefined var b = 1;
- var定義的變數可以修改,如果不初始化會輸出undefined,不會報錯
- var 宣告的變數在window上,用let或者const去宣告變數,這個變數不會被放到window上
- 很多語言中都有塊級作用域,但JS沒有,它使用var宣告變數,以function來劃分作用域,大括號“{}” 卻限定不了var的作用域,因此用var宣告的變數具有變數提升的效果
- var 宣告的變數作用域是全域性的或者是函式級的
(2)function命令
function add(a) { var sum = a + 1; return sum; }
- 聲明瞭一個名為 add的新變數,併為其分配了一個函式定義
- {}之間的內容被分配給了 add
- 函式內部的程式碼不會被執行,只是儲存在變數中以備將來使用
(3) cosnt命令
const a; //報錯,必須初始化 const b = 1;
- const定義的變數不可以修改,而且必須初始化
- 該變數是個全域性變數,或者是模組內的全域性變數
- 如果一個變數只有在宣告時才被賦值一次,永遠不會在其它的程式碼行裡被重新賦值,那麼應該使用const,但是該變數的初始值有可能在未來會被調整(常變數)
- 建立一個只讀常量,在不同瀏覽器上表現為不可修改;建議申明後不修改;擁有塊級作用域
- const 代表一個值的常量索引,也就是說,變數名字在記憶體中的指標不能夠改變,但是指向這個變數的值可能 改變
- const定義的變數不可修改,一般在require一個模組的時候用或者定義一些全域性常量
-
可以在全域性作用域或者函式內宣告常量,但是必須初始化常量
-
常量不能和它所在作用域內其它變數或者函式擁有相同名稱
(4) let命令
let a; //undefined let b = 1; function add(b) { let sum = b + 1; return sum; } let c = add(b);
- 需要”javascript 嚴格模式”:'use strict';
- 不存在變數提升
- 不允許重複宣告
- let宣告的變數作用域是在塊級域中,函式內部使用let定義後,對函式外部無影響(塊級作用域)
- 可以在宣告變數時為變數賦值,預設值為undefined,也可以稍後在指令碼中給變數賦值,在生命前無法使用(暫時死區)
(5) import命令
(6) class命令