es6 基本用法

2021-08-21 05:54:15 字數 2988 閱讀 6574

一、let 命令 -基本用法

1、塊及作用域

var d = 1;    

if(true)

console.log(d) -> 4 d被覆蓋

let c = 2;

if (true)

console.log(c) -> 2

上面的**中 分別用 var 和 let 宣告了兩個變數 。var 宣告的即使在作用域的也可以覆蓋之前宣告 。 let 宣告的變數不會被覆蓋,這表明 let 宣告的變數在塊級作用域外無效。

// for 迴圈的計數器就很適合使用 let 命令。

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

console.log(i)

//referenceerror: i is not defined

上面**中 計數器 i 只在 for 迴圈體內部有效,在迴圈體外引用就回報錯。 如果用 var 宣告變數 i  的話,那麼 i 在全域性作用域內全都有效,所以全域性只有乙個變數 i。

2、不存在變數提公升

console.log(a)  -> undefined

var a = 9;

console.log(b) -> referenceerror

let b = 10;

在上面**中, 表明了 var 存在變數提公升  let 不存在變數提公升(也稱 預解釋)。"變數提公升"的現象,既變數可以在宣告之前使用,值為 undefined  。一般邏輯上,變數應該在宣告語句之後才可以被使用。而 let  糾正了這一現象,它所宣告的變數一定要在宣告後才可以使用否則報錯。

3、暫時性死區

var a = 124;

if(true)

在上面的**中,存在全域性變數 a 但在塊級作用域內 let 又宣告了乙個區域性變數 a ,導致後者繫結這個塊級作用域,所以在let宣告變數前,對 a 賦值會報錯。

也就是說,在區塊中有 let 和 const 命令 ,則這個區塊對當前宣告的變數,形成乙個封閉作用域。只要在宣告前就是用這些變數,就回報錯。

總之在**塊內,使用 let 宣告變數之前,該變數都是不可使用的。這在語法上成為 "暫時性死區"(temporal dead zone) 簡稱tdz。

4、不允許重複宣告

function ()
5、結構賦值

let cat = 'maomao';

let dog = 'gougou';

let zoo =

console.log(zoo) // ->

6、 拼接字串

var string = document.getelementbyid("string");

var as = "3";

var ex = "4";

string.innerhtml = (`

there are$items

in your basket,$

are on sale;

`)

二、const 命令 

1、基本用法

const 用來宣告乙個唯讀的常量。而且常量一旦宣告,常量的值就不能被改變。

const a = 3.14;

console.log(a); //-> 3.14

a = 4.21;

console.log(a) //-> typeerror: assignment to constant variable.

在上面**中 改變常量 a 的值會報錯。

const  foo ;      //-> syntaxerror: missing initializer in const declaration
在上面**中 const 只宣告不賦值會報錯。這就意味著,const 一旦宣告常量就立即初始化,不能以後在賦值。

const 同 let 一樣不存在常量提公升,存在暫時性死區。

2、本質

實際上const保證的並不是常量的值不可被改動,而是變數指向的那個記憶體位址不能改動。常量指向的記憶體位址只是乙個指標,const只能保證這個指標是固定的,至於它的資料結構是否可變就不一定了。

const foo = {};

foo.value = 'hello'; // 給 foo 新增乙個屬性可以實現

console.log(foo.value) // -> hello

foo = {}; //把 foo 指向另乙個物件 就會報錯

在上面**中 常量 foo 存貯的是乙個位址,這個位址是不可變 ,所以報錯。但是物件本身是可以變得,所以我們可以為其新增新屬性。

再來看乙個陣列

const arr = ;

arr.push('1');

console.log(arr.length); // -> 1

arr = ['die'] // ->將arr重新賦值 報錯

在上面**中 arr 這個陣列本身是可寫的,但是將另乙個賦給 arr 就會報錯。

因此 當我們宣告常量遇到陣列、物件時要小心。

ps: 將物件凍結方法 object.feeeze  =>  const foo = object.feeeze ( {} );  

end: 本人接觸es6 有段時間了,最近又在看阮一峰es6 所以就當乙個小結好啦。 有問題,多多指教。

ES6的Map基本用法

使用方法 var map newmap map的迴圈 arr.foreach key,value console.log map set 是給map集合設定鍵值對元素 引數1 鍵 引數2 值 get 是獲取map集合中指定鍵的值 判斷指定鍵是否存在於map集合中 返回布林型別的值 var map n...

es6 基本語法

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

es6基本語法

1.es6基本語法 變數的宣告 let 限制作用域 塊 const 常量 唯讀不可更改 const pi 3.14156 console.log pi pi 3.14 console.log pi let a 1 var a for var i 0 i 10 i a 6 輸出10 直接跳轉到最大值 ...