es6 入坑筆記(二)---函式擴充套件,箭頭函式,擴充套件運算子...
函式擴充套件
1.函式可以有預設值 function demo( a = 10,b ){}
2.函式可以使用解構
function demo( { a = 0,b = 0 } = {} ){
}
3.函式引數最後可以多一個逗號
function demo(a,b,c,){
}
坑:
1.與for等父子域不同
function(a){
let a=10;
}
會報錯,因為a已經被定義
2.
function move({x, y} = { x: 0, y: 0 })
{ return [x, y]; }
move({x: 3, y: 8});
// [3, 8]
move({x: 3}); // [3, undefined]
move({}); // [undefined, undefined]
move(); // [0, 0]
undefined才
會觸發函式引數的預設
箭頭函式
簡略形式:(引數)=>(return 的資料)
完整形式:
(引數)=>{
語句
return資料
}
作用:解決了this物件,當前this指向最頂層的申明物件
eg:
let json = {
name:"zjj",
demo:function(){
setTimeout(()=>{
alert(this.name);//這裡的this不再是當前的執行時物件,而是最頂層的json
}),200
}
}
坑
1.箭頭函式裡沒有arguments轉用...
//錯誤程式碼
let show = function(){
alert(arguments);
}
//正確程式碼
let show = function(...args){
alert(args);
}
2.箭頭函式不能作為建構函式
擴充套件運算子
1....
1.雜湊的資料變成陣列
demo(1,2,3,4);
function(a,b,...c){
//a = 1;b = 2 , c = [3,4];
}
2.陣列變成雜湊的資料
let arr1 = [1,2,3];//將arr1複製給另一個數組
let arr2 = [...arr1];
坑:必須放在最後
冪
2**3=8;