亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入理解JavaScript 箭頭函數

2019-11-19 11:25:31
字體:
來源:轉載
供稿:網友

JavaScript箭頭函數是ECMAScript 6中引入的編寫函數表達式的一種簡便方法。通常,在JavaScript中,可以通過兩種方式創建函數:

  • 函數語句。
  • 函數表達式。

可以如下所示創建函數語句:

function add(num1, num2) {var res = num1 + num2;return res;}var sum = add(7, 2);console.log(sum);

也可以創建相同功能的函數表達式,如下所示:

var add = function (num1, num2) {var res = num1 + num2;return res;}var sum = add(7, 2);console.log(sum);

ECMA 2015(或ECMA Script 6)引入了更短的語法來編寫函數表達式,稱為箭頭函數。使用箭頭函數,你可以將上面的函數表達式編寫為:

var add = (num1, num2) => { return num1 + num2; };

正如你所看到的,使用箭頭函數編寫的函數表達式更短。

箭頭函數的基本語法規則

首先,參數應該在小括號中傳遞。你可以創建有兩個參數的箭頭函數,如下所示:

ar add = (num1, num2) => { return num1 + num2; };

如果只要傳遞一個參數,那么括號是可選的,可以選擇忽略。你可以創建一個參數的箭頭函數,如下所示:

var add = num => { return num * 10; };

如果沒有參數,那么你必須要有一個空括號――不能沒有。所以對于沒有參數的函數,箭頭函數是這樣寫的:

var add = () => { console.log("hey foo") };

如果函數中有單個表達式或語句:

  • 在主體中使用括號是可選的。
  • 使用return語句是可選的。

你可以重寫add函數,而不使用函數體中的括號和return語句,如下所示:

var add = (num1, num2) => num1 + num2;

你也可以使用控制臺語句編寫不帶參數的函數,如下所示:

var add = () => console.log("hey");

返回對象字面量

JavaScript箭頭函數也可以返回對象字面量。唯一的要求是你需要把返回對象裝入小括號中,如下所示:

var foo = (name, age) => ({name: name,age: age})var r = foo("my cat", 22);console.log(r);

正如你所看到的那樣,要返回的對象被放在了小括號內。如果你不這樣做,那么JavaScript將無法區分對象字面量和函數體。

箭頭函數支持rest參數

JavaScript箭頭函數支持另一個ES6功能:rest參數。你可以在箭頭函數中使用rest參數,如下面的代碼所示:

var add = (num1, num2, ...restparam) => {console.log(restparam.length);var result = num1 + num2;return result;}var r = add(67, 8, 90, 23);console.log(r);

在這個例子中,當你使用帶有rest參數的箭頭函數時,輸出會是2和75,因為傳遞的額外參數的數量是2,num1和num2的總和是75。

箭頭功能支持默認參數

另外,JavaScript箭頭函數還支持另一個ES6功能:默認參數。此處詳細介紹了默認參數。你可以在箭頭函數中使用默認參數,如下所示:

var add = (num1 = 9, num2 = 8) => {var result = num1 + num2;return result;}var r = add();console.log(r);

在上面的代碼中,箭頭函數中有默認參數。調用該函數時,我們沒有傳遞任何值,并且由于默認參數的存在,輸出將是17。

“this”在箭頭函數中如何工作?

箭頭函數沒有它自己的this值。箭頭函數中的this值總是從封閉范圍繼承。在JavaScript中,每個函數都有它自己的this值,這取決于代碼是如何調用函數的。請仔細看下面列出的代碼:

var Cat = {name: 'mew',canRun: function () {console.log(this)var foo = () => { console.log(this) }foo();}};

在這里,cat是一個對象字面量,它包括:

  • 屬性名稱。
  • 方法canRun。

在canRun方法中,我們創建了一個箭頭函數foo,給出了this值。由于箭頭函數沒有它自己的this值,所以它將從周圍的函數獲取,因此,你將得到:

正如你所看到的,this值在canRun方法和箭頭函數foo中是相同的。箭頭函數從繼承范圍得到this值。如果你對此不甚清楚,那么請牢記以下兩條規則:

  • 使用object.method在方法中獲取一個有意義的對象作為this值。
  • 對于任何其他要求,使用箭頭函數,由于函數沒有自己的this值,所以它將繼承封閉范圍的this值。

使用箭頭函數的限制條件

應用箭頭函數時要注意的一些限制條件:

  • 箭頭函數沒有參數對象。
  • 箭頭函數不能與新運算符一起使用,因此它不能用作構造函數。
  • 箭頭函數沒有原型屬性。

如果你嘗試使用箭頭函數作為構造函數,那么你會得到異常。請看下面的代碼:

var foo = (name, age) => { name = name, age = age };var f1 = new foo("cat", 6);

代碼試圖通過使用箭頭函數foo作為構造函數來創建對象f1,JavaScript將拋出以下異常:

而且,當你試圖輸出箭頭函數的原型值時,你會得到undefined的輸出:

var foo = (name, age) => { name = name, age = age };console.log(foo.prototype);

發生這種情況的原因是因為箭頭函數沒有原型屬性。請記?。弘m然箭頭函數為你提供了編寫函數表達式的簡短方法,但它沒有自己的this值,也不能用作構造函數。

英文原文:Easy JavaScript Part 6 : Arrow functions in JavaScript

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产91色在线| 国模吧一区二区| 91九色国产社区在线观看| 最近2019年手机中文字幕| 亚洲欧美在线第一页| 日韩大片免费观看视频播放| 精品中文字幕久久久久久| 亚洲精品www久久久| 亚洲国产成人91精品| 国产精品18久久久久久首页狼| 国产在线98福利播放视频| 日韩av免费一区| 欧美极品少妇与黑人| 中文字幕日韩欧美精品在线观看| 日韩欧美主播在线| 国产精品av网站| 亚洲午夜久久久久久久| 日韩欧美在线网址| 成人有码视频在线播放| 欧美性黄网官网| 国产午夜精品理论片a级探花| 日本三级韩国三级久久| 成人免费直播live| 亚洲伊人成综合成人网| 久久免费国产精品1| 在线日韩日本国产亚洲| 日韩av最新在线观看| 欧美另类高清videos| 亚洲精品suv精品一区二区| 91精品国产91久久久久久吃药| 日韩av在线网| 一本一道久久a久久精品逆3p| 亚洲精品国产福利| 欧美精品videosex性欧美| 亚洲电影免费观看| 亚洲精品国产精品自产a区红杏吧| 欧美电影免费观看高清| 18一19gay欧美视频网站| 91av国产在线| 最近2019中文字幕mv免费看| 日韩中文在线中文网三级| 国产精品一区专区欧美日韩| 欧美国产日韩一区二区在线观看| 影音先锋欧美在线资源| 国产精品女主播视频| 精品久久久久久亚洲国产300| 精品久久久一区二区| 日韩av免费看网站| 亚洲性无码av在线| 日韩免费观看视频| 国产a级全部精品| 亚洲一区二区三区乱码aⅴ| 亚洲已满18点击进入在线看片| 日韩中文在线中文网三级| 亚洲欧美成人精品| 亚洲天堂第一页| 国产丝袜精品第一页| 最近2019年好看中文字幕视频| 亚洲电影在线看| 午夜精品久久久久久99热软件| 国产亚洲一区精品| 欧美老女人在线视频| 精品国产欧美一区二区五十路| 亚洲国产欧美一区二区丝袜黑人| 久久久国产一区| 国产精品69精品一区二区三区| 国产日韩一区在线| 亚洲图片欧美午夜| 欧美在线中文字幕| 日韩国产精品一区| 亚洲美女av在线播放| 亚洲国产精久久久久久| 97精品国产aⅴ7777| 黑人巨大精品欧美一区二区三区| 中文字幕av一区二区三区谷原希美| 国产视频精品免费播放| 在线午夜精品自拍| 91av视频在线免费观看| 青青草原一区二区| 久久久久久久久国产精品| 亚洲韩国青草视频| 欧美网站在线观看| 国产精品久久久久久中文字| 麻豆成人在线看| 久久99精品国产99久久6尤物| 亚洲一区av在线播放| 精品国产老师黑色丝袜高跟鞋| 久久97久久97精品免视看| 精品久久久久久中文字幕大豆网| 亚洲国产精品成人av| 九九精品在线播放| 夜色77av精品影院| 亚洲日本中文字幕免费在线不卡| 中文字幕亚洲专区| 成人激情综合网| 久久久国产91| 海角国产乱辈乱精品视频| 久久这里只有精品视频首页| 成人黄色在线播放| 成人在线精品视频| 国产一区二区三区在线看| 久久亚洲精品中文字幕冲田杏梨| 91精品视频在线播放| 91精品国产九九九久久久亚洲| 国产精品视频自拍| 亚洲国产精品一区二区久| 久久国产精品亚洲| 国产乱人伦真实精品视频| 一区二区三区视频免费| 亚洲一区av在线播放| 欧美大片va欧美在线播放| 成人欧美一区二区三区在线湿哒哒| 国产日本欧美一区二区三区| 亚洲欧洲日韩国产| 亚洲国产成人久久综合一区| 26uuu另类亚洲欧美日本一| 日韩精品视频观看| 人人爽久久涩噜噜噜网站| 91精品久久久久久久久久另类| 午夜精品99久久免费| 亚洲欧美日韩国产中文| 亚洲激情视频网| 久久免费精品视频| 91香蕉国产在线观看| 成人性生交xxxxx网站| 日韩在线视频线视频免费网站| 亚洲自拍偷拍第一页| 日韩精品中文字幕在线播放| 亚洲成人网在线| 久久久久久久久中文字幕| 91美女高潮出水| 久久久久久美女| 在线观看91久久久久久| 岛国av一区二区在线在线观看| 理论片在线不卡免费观看| 亚洲四色影视在线观看| 日韩精品免费在线视频观看| 91精品国产综合久久香蕉922| 亚洲一区亚洲二区亚洲三区| 亚洲精品免费一区二区三区| 91精品美女在线| 国产精品青青在线观看爽香蕉| 久久久成人精品| 最近2019中文字幕mv免费看| 成人国产亚洲精品a区天堂华泰| 欧美精品videosex极品1| 欧美日韩国产精品一区| 欧美高清自拍一区| 午夜欧美大片免费观看| 久久国产精品首页| 亚洲成色777777在线观看影院| 日韩美女av在线免费观看| 欧洲成人午夜免费大片| 九色精品免费永久在线| 国产激情视频一区| 国产精品高清网站| 国产欧美精品日韩精品| 亚洲福利视频二区| 中文字幕精品一区二区精品| 88xx成人精品| 精品毛片网大全| 午夜精品久久久久久久男人的天堂| 久久夜精品va视频免费观看| 久久综合国产精品台湾中文娱乐网|