ES6_箭頭函式及宣告特點
阿新 • • 發佈:2022-03-16
ES6允許使用箭頭(=>)定義函式。
如:
let fn=(a,b)=>{
return a+b;
}
console.log(fn(2,3));
特點:
1、this是靜態的,this始終指向函式宣告(定義)時所在作用域下的this的值。
比如在全域性作用域先定義連個函式,一個使用箭頭函式定義。
上面兩個函式呼叫都是輸出ace,因為this都是window物件。函式作用域中沒有name變數,於是就去上一級作用域鏈(全域性作用域)找,var宣告的name就是全域性作用域window的屬性。
call方法呼叫,call方法是將一個物件作為自己物件的屬性,而且會改變this指向。
但是,箭頭函式宣告時候的this是全域性上下文物件window,即使是用call也無法改變。
輸出結果為:sabo,ace
2,不能作為構造例項化物件
let Person=(name,age)=>{
this.name;
this.age;
}
let me=new Person("張三",18);//報錯
3、不能使用arguments;
let fn=()=>{
console.log(arguments);//報錯
};
fn();
4、箭頭函式的簡寫
①、省略小括號,當形參有且只有一個的時候。
let add=n=>{
return n+n;
}
console.log( add(5));
②、省略花括號,當代碼體只有一條語句的時候,而且此時return也必須省略,語句執行的結果就是返回值。
let pow=n=>n*n;
console.log( pow(9));