ES6 知識點總結 上

2022-07-07 22:48:10 字數 3287 閱讀 5508

et

let 宣告的變數只在 let 命令所在的**塊內有效。

基本用法

a // 報錯 referenceerror: a is not defined

//不同作用域無法訪問

let 是在**塊內有效,var 是在全域性範圍內有效:

a // referenceerror: a is not defined

b // 1

不能重複宣告

let 只能宣告一次 var 可以宣告多次:

let a = 1;

let a = 2;

var b = 3;

var b = 4;

a // identifier 'a' has already been declared

b // 4

不存在變數提公升

let 不存在變數提公升,var 會變數提公升:

console.log(a);  //referenceerror: a is not defined

console.log(b); //undefined

var b = "banana";

const

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

const pi = "3.1415926";

pi = 123456 // 報錯

暫時性死區:

var pi = "a";

if(true)

es6 明確規定,**塊內如果存在 let 或者 const,**塊會對這些命令宣告的變數從塊的開始就形成乙個封閉作用域。**塊內,在宣告變數 pi 之前使用它會報錯。

注意要點

const 如何做到變數在宣告初始化之後不允許改變的?

其實 const 其實保證的不是變數的值不變,而是保證變數指向的記憶體位址所儲存的資料不允許改動。此時,簡單型別和復合型別儲存值的方式是不同的。對於簡單型別(數值 number、字串 string 、布林值 boolean),值就儲存在變數指向的那個記憶體位址,因此 const 宣告的簡單型別變數等同於常量。而複雜型別(物件 object,陣列 array,函式 function),變數指向的記憶體位址其實是儲存了乙個指向實際資料的指標,所以 const 只能保證指標是固定的,至於指標指向的資料結構變不變就無法控制了,所以使用 const 宣告複雜型別物件時要慎重。

在es6中 按照一定的模式 從陣列中提取數 對對應的變數進行賦值的操作 就叫做解構賦值

本質上講 解構賦值 就是模式匹配

在解構中,有下面兩部分參與:

解構的源,解構賦值表示式的右邊部分。解構的目標,解構賦值表示式的左邊部分。

var [a, b, c] = [1, 2, 3];

// a = 1

// b = 2

// c = 3

可以巢狀

var [a, b, c] = [1, [2], 3];

// a = 1

// b = [2]

// c = 3

不完全解構

var [a,b,c] = [1,2]

// a = 1

// b = 2

// c = undefined12

34var [a,b,c] = [1,2,3]

// a = 1

// b = 2

//這個也屬於不完全解構 多的值直接忽略12

34擴充套件運算子

let [a, ...b] = [1, 2, 3];

//a = 1

//b = [2, 3]12

3支援預設值

let[a,b = "abc"] = [1];

// a = 1

// b = "abc"12

3

陣列的拷貝

var arr = [1,2,3]

var arrsp = [...arr]

// arrsp = [1,2,3]12

3

字串等

在陣列的解構中,解構的目標若為可遍歷物件,皆可進行解構賦值。可遍歷物件即實現 iterator 介面的資料。

let [a, b, c, d, e] = 'hello';

// a = 'h'

// b = 'e'

// c = 'l'

// d = 'l'

// e = 'o'12

3456

屬性的簡介表示方法

es6在{} 允許直接寫入變數名 解析的時候 變數名作為屬性名 變數值作為屬性值

const age = 12;

const name = "amy";

const person = ;

person //

//等同於

const person =

方法名也可以簡寫

const person =

}person.sayhi(); //"hi"

//等同於

const person =

}person.sayhi();//"hi"

屬性名表示式

es6允許用表示式作為屬性名,但是一定要將表示式放在方括號內。

const obj =

}obj.hello(); //"hi"

注意點:屬性的簡潔表示法和屬性名表示式不能同時使用,否則會報錯。

const hello = "hello";

const obj = ;

obj //syntaxerror: unexpected token }

const hello = "hello";

const obj = ;

obj //

object.assign()

用於用來合併物件的

let target = ;

let object2 = ;

let object3 = ;

object.assign(target,object2,object3);

// 第乙個引數是目標物件,後面的引數是源物件

target; // , null);

var pi = "a";

if(true)

ES6知識點總結

面向過程和物件導向的對比 面向過程 物件導向 物件 物件是由屬性和方法組成的 類 class 在 es6 中新增加了類的概念,可以使用 class 關鍵字宣告乙個類,之後以這個類來例項化物件 物件導向的思維特點 抽取 抽象 物件共用的屬性和行為組織 封裝 成乙個類 模板 對類進行例項化,獲取類的物件...

ES6知識點簡單總結

let宣告的變數只能在所處遇到的快級有效。不存在變數提公升。暫時性死區,不受外部 影響。在乙個大括號中使用let關鍵字宣告的變數才具有塊級作用域,var關鍵字不具有這個特點 具有塊級作用域。使用const關鍵字宣告的常量必須賦值。常量賦值後值不能更改。varletconst 函式級作用域 塊級作用域...

es6常用知識點總結

1.定義變數的方式 let 1 沒有變數提公升 var具有變數提公升 即在當前作用域的最上面定義這個變數 但不賦值 例 console.log x var x 20 顯示undefined console.log m let m 100 報錯 2 let不可以重複宣告 例 var x 10 var ...