ES6的let與const命令

2021-09-18 08:14:40 字數 1969 閱讀 1827

1.塊級作用域:乙個大括號{}所包起來的內容就是乙個塊級作用域;

let和const就是塊級作用域,

2.嚴格模式:「use strict」;

3.如果在同乙個塊級作用域中,let乙個變數不能重複使用,每乙個變數名只能被let一次,const也是這樣的。

4.const定義的是乙個常量,這個常量不能被修改,但是如果const乙個物件,物件的成員屬性值可以修改,而這個物件那個最後返回的位址指標是唯一確定的。

將物件凍結**:

var constantize = (obj) => 

});};

const foo = object.freeze({});

// 常規模式時,下面一行不起作用;

// 嚴格模式時,該行會報錯

foo.prop = 123;

5.for迴圈體內有父作用域和子作用域

for (let i = 0; i < 3; i++) 

//上面**正確執行,輸出了 3 次abc。這表明函式內部的變數i與迴圈變數i不在同乙個作用域,有各自單獨的作用域

6.var是有變數提公升的,但是let並沒有變數提公升

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

var foo = 2;

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

let bar = 2;

凡是在塊級作用域中,let和const命令,在申明之前使用了,就會報錯。語法上稱「暫時性死區」。

7.塊級作用域中的函式宣告不能再外部引用,es6 的塊級作用域允許宣告函式的規則,只在使用大括號的情況下成立,如果沒有使用大括號,就

會報錯。

// 不報錯

'use strict';

if (true)

}// 報錯

'use strict';

if (true)

function f() {}

對於es6中宣告的函式,瀏覽器可以規定自己的行為方式: 

8.在es6中,var命令和function命令宣告的全域性變數,依舊是頂層物件的屬性;另一方面規定,let命令、const命令、class命令宣告的全域性變數,不屬於頂層物件的屬性。

同一段**為了能夠在各種環境,保證都能取到頂層物件,**操作:

var getglobal = function () 

if (typeof window !== 'undefined')

if (typeof global !== 'undefined')

throw new error('unable to locate global object');

};

可以引用global作為頂層物件,在所有環境下,global都是存在的,都可以從它拿到頂層物件,**操作為:

// commonjs 的寫法

require('system.global/shim')();

// es6 模組的寫法

import shim from 'system.global/shim'; shim();

//上面**可以保證各種環境裡面,global物件都是存在的。

// commonjs 的寫法

var global = require('system.global')();

// es6 模組的寫法

import getglobal from 'system.global';

const global = getglobal();

//上面**將頂層物件放入變數global。

(ES6學習總結)let與const命令

let的特點大致總結有以下四點 1.只在命令的 塊內有效,即作用域只在塊級或子塊中有效 如 for let i 0 i 10 i uncaught syntaxerror identifier a has already been declared function foo args identif...

ES6新增的let與const

宣告常量,一旦宣告必須立馬賦值,否則報錯 const pi 3.14 const pi 報錯 uncaught syntaxerror missing initializer in const declaration 常量賦值以後,不能改變,否則同樣報錯 const pi 3.14 pi 3 報錯 ...

ES6學習 let和const命令

1.let命令 所宣告的變數命令所在 塊有效 a referenceerror a is not defined.b 1for迴圈的計數器,就很適合let命令 for let i 0 i arr.length i console.log i referenceerror i is not defin...