es6知識點總結(一)
是對賦值運算子的擴充套件,一種針對陣列或者物件進行模式匹配,然後對其中的變數進行賦值
變數的解構賦值實用性很強,使用場景很多:
1.交換賦值
2.函式引數的定義
3.函式引數的預設值
4.從函式返回多個值
5.提取json資料
6.遍歷map結構
陣列解構、物件解構、字串解構、數值解構、布林值解構、函式引數解構
基本用法
var a, b, rest;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20
[a, b, ...rest] = [10, 20, 30, 40, 50]; // ... 擴充套件運算子/展開運算子
console.log(a); // 10
console.log(b); // 20
console.log(rest); // [30, 40, 50]
let [a, [b], d] = [1, [2, 3], 4];
console.log(a); //1
console.log(b); //2
注意:
如果解構不成功,變數的值就等於undefined
沒有變數接收的解構值會被忽略掉
如果賦值不是陣列則會報錯。
防止從陣列中取出乙個值為undefined的物件,可以在表示式左邊的陣列中為任意物件預設預設值
let [foo = true] = ;
console.log(foo); //true
let a, b;
[a=5, b=7] = [3];
console.log(a); // 3
console.log(b); // 7
預設值可以引用解構賦值的其他變數,但改變量必須已經宣告,否則會報錯。
let [x = 1, y = x] = [2];
console.log(x); // 2
console.log(y); // 2
物件與陣列解構賦值比較
陣列的元素是按次序排列的,變數的取值是由它的位置決定
物件的屬性沒有次序,變數必須與屬性同名才能取到正確的值。
如果變數名與屬性名不一致,必須明確對應關係
基本賦值
var o = ;
var = o;
console.log(p); // 42
console.log(q); // true
let obj = ]};
let ] } = obj;
物件解構賦值也指定預設值,且預設值生效條件是物件的屬性嚴格等於undefined。
var = ;
console.log(a); // 3
console.log(b); // 5
由於陣列本質是特殊的物件,因此可以對陣列進行物件屬性的解構。
let arr = [1, 2, 3];
let = arr;
將字串看作乙個類似於陣列的物件。
const [a, b, c, d] = 'hello';
console.log(a); //h
console.log(b); //e
console.log(c); //l
console.log(d); //l
類似陣列的物件都有乙個length屬性,因此還可以對這個屬性進行解構。
let = 'hello';
console.log(len); //5
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 ...