?? 個人主頁歡迎訪問 ??
大家好,本人名叫蘇日儷格,大家叫我 (格格) 就好,在上一章節(jié)中我們學到了字符串模板的用法,下面我們一起來繼續(xù)學習箭頭函數(shù):
在箭頭函數(shù)之前,需要看一個例子:
function show(a=1){
let a = 2;
console.log(a); // Identifier 'a' has already been declared
}
show();
上面的代碼告訴我們函數(shù)的參數(shù)默認已經被定義了,一經聲明,就不能再用let或者const進行聲明了,只能用var;這個有點跑題了,算是送大家的一個小tip吧,下面讓我們一起來看箭頭函數(shù)吧:
//普通函數(shù)的寫法:
function show(){
return 1;
}
show();
//上面的函數(shù)的箭頭函數(shù)寫法:
let show = () => 1; // 箭頭的左邊是參數(shù)右邊是返回值
console.log(show());
如果要想在函數(shù)里面寫語句的時候,寫法是這樣的:
let show = (a=1,b=2) => {
console.log(a,b); // 1 2
}
show();
箭頭函數(shù)和普通函數(shù)除了寫法不同之外,還有三點不同,請看下面的例子:
let json = {
name: '蘇日儷格',
show: function(){
setTimeout(function(){
console.log(this.name); // 控制臺什么都沒有輸出
},1000);
}
}
json.show();
這個例子大多都是在vue等框架下開發(fā)遇到的問題,因為this指向的是當前的函數(shù),先要讓它指向外面的json對象,就還要在外面進行轉換,太麻煩,而箭頭函數(shù)則不同:
let json = {
name: '蘇日儷格',
show: function(){
setTimeout(() => {
console.log(this.name); // 蘇日儷格
},1000);
}
}
json.show();
綜上所述,第一個不同之處就是箭頭函數(shù)里的this指向的是定義函數(shù)所在的對象,而不是運行時所在的對象
小白:那第二個不同之處呢?
格格:第二個就是箭頭函數(shù)里面不能使用arguments,如果用了就是is not defined
解決辦法:就是...擴展運算符(在本章的第五小節(jié))
let show = (...a) => {
console.log(a); // [1, 2, 3, 4, 5]
};
show(1,2,3,4,5);
第三個就是箭頭函數(shù)不能當做構造函數(shù)來用:
let Show = ()=>{
this.name = '蘇日儷格';
}
let a = new Show();
console.log(a.name); // Show is not a constructor
關于箭頭函數(shù)我們都已經了然于心,預知擴展運算符如何,請聽下回分解 (^?^)/~~~
本文的所有內容均是一字一句敲上去的,希望大家閱讀完本文可以有所收獲,因為能力有限,掌握的知識也是不夠全面,歡迎大家提出來一起分享!謝謝O(∩_∩)O~
歡迎來我的GitHub,喜歡的可以star,項目隨意fork,支持轉載但要下標注,同時恭候:我的博客 Resume
等一下( ?? .? ?? ),我還有最后一句話:
這里雖然沒有都市的繁華,
也沒有山林的鳥語花香,
只有一片如水的寧靜,
古人云:
既來之則安之,
既然來到了這里,
就可以靜心休憩你的靈魂,
調養(yǎng)你疲憊的心,
再見...
