ES6語法了解

2021-09-12 22:29:53 字數 2101 閱讀 2666

1.let命令:

(1)基本語法:es6 新增了let命令,用來宣告變數。它的用法類似於var,但是所宣告的變數,只在let命令所在的**塊內有效

a // referenceerror: a is not defined.

b // 1

表示let申明的變數只在**塊之內呼叫有效,在**塊之外呼叫會報錯

(2)let命令不存在變數提公升:

let命令改變了語法行為,它所宣告的變數一定要在宣告後使用,否則報錯。

// var 的情況:可以事先不用申明,直接使用變數

console.log(foo); // 輸出undefined

var foo = 2;

// let 的情況:必須事先進行變數的申明

console.log(bar); // 報錯referenceerror

let bar = 2;

(3)let命令暫時性死區:

var tmp = 123;

if (true)

上面**中,存在全域性變數tmp,但是塊級作用域內let又宣告了乙個區域性變數tmp,

導致後者繫結這個塊級作用域,所以在let宣告變數前,對tmp賦值會報錯。

注意:es6 明確規定,如果區塊中存在letconst命令,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯

(4)let不允許重複申明乙個變數:

let不允許在相同作用域內,重複宣告同乙個變數

// 報錯

function func()

// 報錯

function func()

function func(arg) 

func() // 報錯

function func(arg)

}func() // 不報錯

不能在函式內部重新申明引數

2.塊級作用域:

(1)認識塊級作用域

var tmp = new date();

function f()

}f(); // undefined

if**塊的外部使用外層的tmp變數,內部使用內層的tmp變數。但是,函式f執行後,輸出結果為undefined,原因在於變數提公升,導致內層的tmp變數覆蓋了外層的tmp變數。

var s = 'hello';

for (var i = 0; i < s.length; i++)

console.log(i); // 5

變數i只用來控制迴圈,但是迴圈結束後,它並沒有消失,洩露成了全域性變數。

(2)es6語法中的塊級作用域:es6 允許塊級作用域的任意巢狀

console.log(insane); // 報錯

}}}};

內層作用域可以定義外層作用域的同名變數

}}}};

3.const命令:const宣告乙個唯讀的常量。一旦宣告,常量的值就不能改變

const pi = 3.1415;

pi // 3.1415

pi = 3;

// typeerror: assignment to constant variable.

const宣告的變數不得改變值,這意味著,const一旦宣告變數,就必須

立即初始化,不能留到以後賦值。

es6 基本語法

es6規定暫時性死區和let const語句不出現變數提公升,主要是為了減少執行時錯誤,防止在變數宣告前就使用這個變數,從而導致意料之外的行為。這樣的錯誤在 es5 是很常見的,現在有了這種規定,避免此類錯誤就很容易了。總之,暫時性死區的本質就是,只要一進入當前作用域,所要使用的變數就已經存在了,但...

ES6語法總結

1 物件的寫法 es5中物件 es6中物件 注意這種寫法的屬性名稱和值變數是同乙個名稱才可以簡寫,否則要想es5那樣的寫法,例如 2 在物件中的方法的寫法 es5中物件 substrict function es6中物件 substrict 3 物件的匯出寫法 es5兩種形式 1 module.ex...

ES6 基礎語法

1 var vs let const var 可以定義全域性變數,與之不同,let的重要特性就是提供了塊級作用域和不具備變數提公升。const主要用於定義常量,常量顧名思義不是變數,意思就是一經定義,值就無法改變。首先弄明白塊級作用域 es5中有全域性作用域與函式作用域,塊級作用域是es6中的新語法...