文章内容
-
-
-
-
- 1、let、var、const差別
- 2、關于ES6
- 3、ES6 聲明變量的六種方法
-
-
-
1、let、var、const差別
指令聲明的,在全局範圍内都有效
var
指令會發生“變量提升”現象,即變量可以在聲明之前使用,值為undefined
var
聲明的變量隻在它所在的代碼塊有效
let
指令它所聲明的變量一定要在聲明後使用,否則報錯。在代碼塊内,使用let指令聲明變量之前,該變量都是不可用的。這在文法上,稱為“暫時性死區”
let
- 隻要塊級作用域記憶體在
指令,它所聲明的變量就“綁定”(binding)這個區域,形成了封閉作用域不再受外部的影響。
let
不允許在相同作用域内,重複聲明同一個變量。
let
應該避免在塊級作用域内聲明函數。如果确實需要,也應該寫成函數表達式,而不是函數聲明語句。
// ES5 環境
function f() { console.log('I am outside!'); }
(function () {
function f() { console.log('I am inside!'); }
if (false) {
}
f();
}());
上面代碼在 ES5 中運作,會得到“I am inside!”,因為在if内聲明的函數f會被提升到函數頭部,實際運作的代碼如下。
// ES5 環境
function f() { console.log('I am outside!'); }
(function () {
function f() { console.log('I am inside!'); }
if (false) {
}
f();
}());
// 浏覽器的 ES6 環境
function f() { console.log('I am outside!'); }
(function () {
if (false) {
// 重複聲明一次函數f
function f() { console.log('I am inside!'); }
}
f();
}());
// Uncaught TypeError: f is not a function
2、關于ES6
- 允許在塊級作用域内聲明函數。
- 函數聲明類似于var,即會提升到全局作用域或函數作用域的頭部。
- 同時,函數聲明還會提升到所在的塊級作用域的頭部。
聲明一個隻讀的常量
const
聲明的變量不得改變值,這意味着,
const
一旦聲明變量,就必須立即初始化,不能留到以後指派。
const
的作用域與
const
指令相同:隻在聲明所在的塊級作用域内有效。
let
指令聲明的常量也是不提升,同樣存在暫時性死區,隻能在聲明的位置後面使用。
const
聲明的常量,也與let一樣不可重複聲明。
const
3、ES6 聲明變量的六種方法
ES5兩種:指令和
var
指令。ES6 除了添加
function
和
let
指令,還有兩種聲明變量的方法:
const
指令和
import
指令。
class