1. 程式人生 > 實用技巧 >ES6的六種宣告變數方法

ES6的六種宣告變數方法

ES5 只有兩種宣告變數的方法:var命令和function命令。

ES6 除了新增letconst命令,還有兩種宣告變數的方法: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命令