日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript ES6箭头函数指南

發(fā)布時間:2025/6/15 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript ES6箭头函数指南 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

胖箭頭函數(shù)(Fat arrow functions),又稱箭頭函數(shù),是一個來自ECMAScript 2015(又稱ES6)的全新特性。有傳聞說,箭頭函數(shù)的語法=>,是受到了CoffeeScript?的影響,并且它與CoffeeScript中的=>語法一樣,共享this上下文。

箭頭函數(shù)的產生,主要由兩個目的:更簡潔的語法和與父作用域共享關鍵字this。接下來,讓我們來看幾個詳細的例子。

新的函數(shù)語法

傳統(tǒng)的JavaScript函數(shù)語法并沒有提供任何的靈活性,每一次你需要定義一個函數(shù)時,你都必須輸入function () {}。CoffeeScript如今之所以那么火,有一個不可忽略的原因就是它有更簡潔的函數(shù)語法。更簡潔的函數(shù)語法在有大量回調函數(shù)的場景下好處特別明顯,讓我們從一個Promise鏈的例子看起:

function?getVerifiedToken(selector)?{return?getUsers(selector).then(function?(users)?{?return?users[0];?}).then(verifyUser).then(function?(user,?verifiedToken)?{?return?verifiedToken;?}).catch(function?(err)?{?log(err.stack);?}); }

以下是使用新的箭頭函數(shù)語法進行重構后的代碼:

function?getVerifiedToken(selector)?{return?getUsers(selector).then(users?=>?users[0]).then(verifyUser).then((user,?verifiedToken)?=>?verifiedToken).catch(err?=>?log(err.stack)); }

以下是值得注意的幾個要點:

  • function和{}都消失了,所有的回調函數(shù)都只出現(xiàn)在了一行里。

  • 當只有一個參數(shù)時,()也消失了(rest參數(shù)是一個例外,如(...args) => ...)。

  • 當{}消失后,return關鍵字也跟著消失了。單行的箭頭函數(shù)會提供一個隱式的return(這樣的函數(shù)在其他編程語言中常被成為lamda函數(shù))。

這里再著重強調一下上述的最后一個要求。僅僅當箭頭函數(shù)為單行的形式時,才會出現(xiàn)隱式的return。當箭頭函數(shù)伴隨著{}被聲明,那么即使它是單行的,它也不會有隱式return:

const?getVerifiedToken?=?selector?=>?{return?getUsers().then(users?=>?users[0]).then(verifyUser).then((user,?verifiedToken)?=>?verifiedToken).catch(err?=>?log(err.stack)); }

如果我們的函數(shù)內只有一條聲明(statement),我們可以不寫{},這樣看上去會和CoffeeScript中的函數(shù)非常相似:

const?getVerifiedToken?=?selector?=>getUsers().then(users?=>?users[0]).then(verifyUser).then((user,?verifiedToken)?=>?verifiedToken).catch(err?=>?log(err.stack));

你沒有看錯,以上的例子是完全合法的ES6語法。當我們談論只包含一條聲明(statement)的箭頭函數(shù)時,這并不意味著這條聲明不能夠分成多行寫。

這里有一個坑,當忽略了{}后,我們該怎么返回空對象({})呢?

const?emptyObject?=?()?=>?{}; emptyObject();?//??

不幸的是,空對象{}和空白函數(shù)代碼塊{}長得一模一樣。。以上的例子中,emptyObject的{}會被解釋為一個空白函數(shù)代碼塊,所以emptyObject()會返回undefined。如果要在箭頭函數(shù)中明確地返回一個空對象,則你不得不將{}包含在一對圓括號中(({})):

const?emptyObject?=?()?=>?({}); emptyObject();?//?{}

下面是一個更完整的例子:

function?()?{?return?1;?} ()?=>?{?return?1;?} ()?=>?1function?(a)?{?return?a?*?2;?} (a)?=>?{?return?a?*?2;?} (a)?=>?a?*?2 a?=>?a?*?2function?(a,?b)?{?return?a?*?b;?} (a,?b)?=>?{?return?a?*?b;?} (a,?b)?=>?a?*?bfunction?()?{?return?arguments[0];?} (...args)?=>?args[0]()?=>?{}?//?undefined ()?=>?({})?//?{}

this

JavaScript中this的故事已經是非常古老了,每一個函數(shù)都有自己的上下文。以下例子的目的是使用jQuery來展示一個每秒都會更新的時鐘:

$('.current-time').each(function?()?{setInterval(function?()?{$(this).text(Date.now());},?1000); });

當嘗試在setInterval的回調中使用this來引用DOM元素時,很不幸,我們得到的只是一個屬于回調函數(shù)自身上下文的this。一個通常的解決辦法是定義一個that或者self變量:

$('.current-time').each(function?()?{var?self?=?this;setInterval(function?()?{$(self).text(Date.now());},?1000); });

但當使用胖箭頭函數(shù)時,這個問題就不復存在了。因為它不產生屬于它自己上下文的this:

$('.current-time').each(function?()?{setInterval(()?=>?$(this).text(Date.now()),?1000); });

arguments變量

箭頭函數(shù)與普通函數(shù)還有一個區(qū)別就是,它沒有自己的arguments變量:

function?log(msg)?{const?print?=?()?=>?console.log(arguments[0]);print(`LOG:?${msg}`); }log('hello');?//?hello

再次重申,箭頭函數(shù)沒有屬于自己的this和arguments。但是,你仍可以通過rest參數(shù),來得到所有傳入的參數(shù)數(shù)組:

function?log(msg)?{const?print?=?(...args)?=>?console.log(args[0]);print(`LOG:?${msg}`); }log('hello');?//?LOG:?hello

關于yield

箭頭函數(shù)不能作為generator函數(shù)使用。


轉載于:https://blog.51cto.com/13013666/1940096

總結

以上是生活随笔為你收集整理的JavaScript ES6箭头函数指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色免费成人 | 无码精品人妻一二三区红粉影视 | 免费看91的网站 | 二区三区av | 绯色av一区 | 国产在线观看不卡 | 米奇影音 | 超碰2023| 龚玥菲一级淫片 | 天堂网亚洲 | 人妻在卧室被老板疯狂进入 | 性欧美videos另类艳妇3d | www.四色| 午夜在线视频观看 | 神马午夜在线观看 | 国产精品一区二区在线免费观看 | 麻豆av一区二区三区在线观看 | 亚洲色大成网站www www.97ai.com | 国产伦精品一区二区三区视频孕妇 | www.午夜| 重口h文| 福利电影在线播放 | 97色在线观看 | 成人av一区二区在线观看 | 91精品视频在线播放 | 成人片黄网站色大片免费毛片 | 豆花免费跳转入口官网 | 国语对白精彩对话 | 樱花影院最新免费观看攻略 | 亚洲熟妇一区二区 | 一区二区国产视频 | 激情视频一区二区三区 | 国产亚洲精品久久久久四川人 | 偷拍欧美亚洲 | 日本网站在线 | 久久av资源网 | 五月开心激情网 | 丝袜视频在线 | 一区二区三区在线播放 | 亚洲激情欧美激情 | 天天综合入口 | 欧美性猛交xxxx偷拍洗澡 | 国产国语对白 | 久久久性 | 亚洲毛片在线免费观看 | 欧美成人精品一区二区三区在线看 | 欧洲亚洲女同hd | 日韩精品综合 | 少妇高潮一区二区三区99刮毛 | 一区二区三区视频免费观看 | 东凛在线观看 | 国产99在线 | 欧美日韩国产三区 | 精品一区二区三区视频在线观看 | av福利在线看 | 国产一级久久久久毛片精品 | 久久欧美 | 九九视频在线免费观看 | 嫩草在线视频 | 在线免费av网址 | 精品久久亚洲 | 乖疼润滑双性初h | 伊人av网站| 99精品福利视频 | 色综合国产 | 另类国产 | 性高潮久久久久久久久久 | 亚洲国产婷婷 | 永久免费视频网站直接看 | 糖心logo在线观看 | 小日子的在线观看免费第8集 | 一级黄色片毛片 | 播色网 | 一级香蕉视频在线观看 | 国产精品yy | 亚洲人在线播放 | 国产午夜精品理论片 | 中文在线中文资源 | 日本55丰满熟妇厨房伦 | 欧美经典一区 | 黄色美女片 | 无码少妇精品一区二区免费动态 | 韩国19主播内部福利vip | 亚洲国产综合网 | 向日葵视频在线播放 | 亚洲精品乱码久久久久久久 | 欧美私人情侣网站 | 一区二区三区爱爱 | avtt久久 | 毛片在线免费观看网站 | 午夜影院在线观看视频 | 国产小视频网址 | 欧美精品日韩少妇 | 天天狠天天透 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩黄色av | www..com黄色 | 日本视频在线播放 | 一级黄色a级片 |