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...