es6學習筆記

2022-02-02 05:21:26 字數 1552 閱讀 2783

1:陣列的複製

let aa = [1,2,3];

let bb =aa;

let cc =[...aa];

console.log(bb);

//[1, 2, 3]

console.log(cc); //

[1, 2, 3]

aa[0]=4;

console.log(bb);

//[4, 2, 3]

console.log(cc); //

[1, 2, 3]

因為陣列的複製,只是引用位址的複製,原陣列aa發生變化,直接複製的bb陣列也跟著變化,使用...深度轉殖陣列,這樣改變aa陣列之後 cc陣列不會變化!

2:陣列的合併:

let aa =[1,2,3];

let bb =[4,5,6];

let cc =[...aa,...bb];

let dd =aa.concat(bb);

console.log(cc);

//[1, 2, 3, 4, 5, 6]

bb[0]=8;

console.log(cc);

//[1, 2, 3, 4, 5, 6]

console.log(dd); //

[1, 2, 3, 4, 5, 6]

es5使用concat函式,es6直接使用。。。

3:陣列的賦值:

let aa =[1,2,3];

let bb =[4,5,6];

let cc =[...aa,...bb];

let [d,...rest]=cc;

console.log(d);//1

console.log(rest);//

[2, 3, 4, 5, 6]

bb[2]=7;

console.log(rest);

//[2, 3, 4, 5, 6]

。。。rest儲存剩下的陣列,且是深度賦值,修改原陣列aa,不影響rest

4:物件的複製:

1        let aa =;

4 let bb =;

8 let cc ={};

9object.assign(cc,aa,bb);

10 console.log(cc);//

object.assign(目標物件,原物件1,原物件2)

值得注意的是:

陣列巢狀陣列的資料格式,無法簡單的用concat等方法達到深複製的目的:

比如:

var ceshidata =[[,

] ]

無法用下面的方法完成深複製的目的:

var aa =;

aa=ceshidata.concat();

aa[0].push();

console.log(ceshidata);

這樣還是會引用複製的!!

ES6學習筆記

let 塊變數 作用域為塊 const 常亮 作用域為當前塊 解構賦值 例 var x,y 1,2 字元擴充套件 at includes startswith endswith repeat codepointat 模板字串 例 正則的uiy 數值擴充套件 number.isfinite numbe...

ES6學習筆記

常用語法 1 let 與var類似,不同的是let定義的變數有塊級作用域,比如 var a 1 while true alert a 2 用let let a 1 while true alert a 12 const用來定義變數,但是定義之後的值不能再次更改了。乙個實際的用途是用來定義引入的模組,...

ES6學習筆記

var 有變數提公升 let 是塊級作用域,沒有變數提公升 模板語言 還原百分百定義的格式 const 定義常量,特殊情況可以改變值 const b 1 b 2 error const b b.a 2 ok b.c 10 ok object是記憶體位址,位址不變就沒問題 預設值 在不知道接收到個什麼...