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是記憶體位址,位址不變就沒問題 預設值 在不知道接收到個什麼...