箭頭函數是ECMAScript 6最受關注的更新內容之一。它引入了一種用「箭頭」(=>)來定義函數的新語法,它…它碉堡了~。箭頭函數與傳統的JavaScript函數主要區別在于以下幾點:
1.對 this 的關聯。函數內置 this 的值,取決于箭頭函數在哪兒定義,而非箭頭函數執行的上下文環境。
2.new 不可用。箭頭函數不能使用 new 關鍵字來實例化對象,不然會報錯。
3.this 不可變。函數內置 this 不可變,在函數體內整個執行環境中為常量。
4.沒有arguments對象。更不能通過arguments對象訪問傳入參數。只能使用顯式命名或其他ES6新特性來完成。
這些差異的存在是有理可循的。首先,對this的綁定是JavaScript錯誤的常見來源之一。容易丟失函數內置數值,或得出意外結果。其次,將箭頭函數限制為使用固定this引用,有利于JavaScript引擎優化處理。
一、語法
箭頭函數的語法很簡單,定義自變量,然后是箭頭和函數主體。自變量和主題因使用不同可以采用更簡潔的格式。下面這個例子就是采用傳一個參數和返回一個值的箭頭函數。
可以看出,傳一個參數就直接寫就好了,不用加小括號。箭頭指向函數主體,不過函數主體也只是簡單的一條返回語句,所以也不用加大括號。函數構造完畢賦給reflect加以引用。
若需傳入多個參數,則應加上小括號。例如:
sum()方法為兩參數相加并回傳結果。跟前一個例子的唯一區別是傳入了兩個參數,所以要用小括號括起來。它與傳統函數一樣,括號內由逗號將傳入參數分開。同樣,如果該函數不需要傳入參數,那也要以空括號來代替。
若你想使用標準的函數體,或者函數體內可能有更多的語句要執行,則要用大括號將函數體括起來,并明確定義返回值。例如:
大括號內的部分基本等同于傳統函數,除了arguments參數不可用外。
因為大括號是函數主體的標志。而箭頭函數若要返回自定義對象的話,就必須用小括號把該對象括起來先。例如:
上例可以看出,用小括號包含大括號則是對象的定義,而非函數主體。
二、使用
JavaScript最常見錯誤之一就是函數內部this關聯。因為this是根據函數當前的執行環境去取值的,這樣就會在調用時產生誤解,以導致對其他的不相關對象產生了影響。參見下例:
在這段代碼中,本意是想讓PageHandler的init()方法用于構建交互作用,并在點擊事件處理函數中調用this.doSomething()。但是代碼并未按設計初衷來執行,運行時this指向了全局對象而不是PageHandler,從而造成this.doSomething()調用無效出現報錯,因為全局對象中不存在doSomething方法。
當然,可以在函數中使用bind()將this與PageHandler明確關聯起來,見下:
這個實例中的事件處理函數調用了this.doSomething()的箭頭函數。this的取值即為init()內的this值。故而它等效于bind()。
箭頭函數簡明扼要的特性,也使它成為其他函數自變量的理想選擇。例如,若要在ES5上,使用定制比較器來排列數組,典型的代碼見下:
上例用了許多語法來實現一個簡單的操作。若使用箭頭函數,則可寫成很精煉的代碼:
數組的sort/map/reduce等方法都支持回調函數。用箭頭函數可以簡化書寫流程,解放你的雙手去做你想做的事情。
三、補充
箭頭函數的確與傳統函數有不同之處,但仍存在共同的特點。例如:
1.對箭頭函數進行typeof操作會返回“function”。
2.箭頭函數仍是Function的實例,故而instanceof的執行方式與傳統函數一致。
3.call/apply/bind方法仍適用于箭頭函數,但就算調用這些方法擴充當前作用域,this也依舊不會變化。
箭頭函數與傳統函數最大的不同之處在,禁用new操作。
四、結論
箭頭函數是ECMAScript 6一個備受關注的新特性,并且還在不斷的優化著。用簡短語法以定義函數或語句書寫流程是大勢所趨,他們必將亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲激情视频在线| 自拍偷拍亚洲精品| 国产精品高潮视频| 国产成人精品最新| 欧美成年人视频网站| 亚洲免费高清视频| 精品亚洲一区二区| 91探花福利精品国产自产在线| 久久av资源网站| 欧美黑人极品猛少妇色xxxxx| 国产在线观看不卡| 精品无码久久久久久国产| 国产亚洲精品高潮| 欧美巨猛xxxx猛交黑人97人| 奇门遁甲1982国语版免费观看高清| 亚洲人成电影在线播放| 日韩中文在线观看| 欧美成人小视频| 亚洲色图美腿丝袜| 国产精品自拍小视频| 久久亚洲国产精品| 精品一区二区亚洲| 亚洲精品小视频在线观看| 4388成人网| 日韩精品免费看| 久久国产精品免费视频| 中文字幕在线成人| 国产精品视频导航| 成人av在线天堂| 中文字幕日韩综合av| 日韩成人在线播放| 国产日韩欧美在线视频观看| 久久99亚洲精品| 亚洲人成电影网站色xx| 欧美精品videosex性欧美| 欧美一区二区三区免费视| 国产亚洲欧美日韩一区二区| 欧美成在线观看| 久久精品国产亚洲| 日韩一区在线视频| 97精品伊人久久久大香线蕉| 91色视频在线观看| 久久亚洲精品视频| 91高清在线免费观看| 精品一区电影国产| 大胆人体色综合| 国内精品视频一区| 日韩av片永久免费网站| 日韩av片免费在线观看| 日韩成人xxxx| 欧美日韩亚洲一区二区| 欧美大成色www永久网站婷| 国产日韩欧美电影在线观看| 91豆花精品一区| 亚洲a成v人在线观看| 欧美成人高清视频| 尤物九九久久国产精品的分类| 国产精品h在线观看| 在线免费观看羞羞视频一区二区| 国产精品中文字幕在线观看| 国产精品美女在线观看| 日韩欧美精品网站| 久久久精品视频成人| 国产91九色视频| 亚洲欧美激情视频| 欧美国产精品人人做人人爱| 亚洲福利视频免费观看| 日韩视频在线免费观看| 色偷偷88888欧美精品久久久| 国产精品视频1区| 日韩激情在线视频| 欧美亚洲成人精品| 久久久999精品免费| 久久99精品视频一区97| 欧美激情videoshd| 色噜噜狠狠色综合网图区| 亚洲午夜色婷婷在线| 日韩在线视频一区| 国产精品久久中文| 欧美在线xxx| 色先锋资源久久综合5566| 欧美日韩日本国产| 成人午夜黄色影院| 亚洲精品国产电影| 伊是香蕉大人久久| 国产日韩亚洲欧美| 日韩av在线播放资源| 日韩中文字幕欧美| 欧日韩不卡在线视频| 2019中文在线观看| 国产精品吊钟奶在线| 日韩欧美国产激情| 91伊人影院在线播放| 久久久久www| 97香蕉久久超级碰碰高清版| 亚洲人a成www在线影院| 亚洲国内精品在线| 国产精品高潮在线| 国产成人精品久久二区二区| 久久久久久亚洲精品不卡| 国产精品久久久久免费a∨| 国产日韩在线看片| 亚洲精品有码在线| 色无极影院亚洲| 日本成人激情视频| 日韩欧美综合在线视频| 欧美性猛交xxxx乱大交3| 91免费视频国产| 欧美做爰性生交视频| 色综合老司机第九色激情| 亚洲欧美综合区自拍另类| 亚洲摸下面视频| 韩国精品久久久999| 亚洲综合日韩中文字幕v在线| 亚洲国产成人在线播放| 国产精国产精品| 国产精品一区二区3区| 在线观看日韩欧美| 欧美又大又粗又长| 91香蕉嫩草影院入口| 日韩av一区二区在线观看| 91经典在线视频| 日韩一区二区福利| 黑人狂躁日本妞一区二区三区| 国产91精品网站| 亚州成人av在线| 精品国产一区二区三区久久久狼| 日韩在线小视频| 国产一区二区日韩精品欧美精品| 欧美大片在线看免费观看| 欧美午夜精品在线| 夜夜嗨av一区二区三区四区| 欧美午夜电影在线| 国产久一一精品| 欧美日韩ab片| 亚洲bt天天射| 国产精品麻豆va在线播放| 最近日韩中文字幕中文| 在线观看中文字幕亚洲| 国色天香2019中文字幕在线观看| 欧美影院在线播放| 久久亚洲一区二区三区四区五区高| 91亚洲一区精品| 国产成人一区二区三区| 国产精品第3页| 国产成人精品久久亚洲高清不卡| 国产精品久久一区| 精品国产91久久久| 欧美激情在线有限公司| 欧美最顶级的aⅴ艳星| 欧美亚洲伦理www| 国产精品久久97| 久久久久久久久国产| 九九九热精品免费视频观看网站| 中文字幕日韩综合av| 欧美精品福利视频| 91精品久久久久久久久| 久久久久久久影院| 国产精品高清在线观看| 久久精品成人一区二区三区| 一道本无吗dⅴd在线播放一区| 亚洲第一男人天堂| 奇米4444一区二区三区| 国产精品网站视频|