亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript ES6中箭頭函數(shù)注意細(xì)節(jié)小結(jié)

 更新時間:2017年02月17日 08:39:29   作者:xishiyi7  
這篇文章主要給大家總結(jié)了關(guān)于javascript ES6中箭頭函數(shù)注意細(xì)節(jié)的相關(guān)資料,文中介紹的比較詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))。

為什么叫Arrow Function?因為它的定義用的就是一個箭頭:

x => x * x

上面的箭頭函數(shù)相當(dāng)于:

function (x) {
return x * x;
}

但箭頭函數(shù)帶來了些許問題,下面來一起看看吧。

關(guān)于{}

第一個問題是關(guān)于箭頭函數(shù)與{}。

箭頭函數(shù),乍一看,用法似乎很簡單,比如像下面這樣用來給數(shù)組每一項乘以2:

const numbers = [1, 2, 3];
 const result = numbers.map(n => n * 2);
 // produces [2,4,6]

但是,如果使用不當(dāng),可能會引發(fā)意想不到的問題。比如下面,嘗試為數(shù)組中每一項去產(chǎn)生對象字面量,看上去挺簡單的map操作,還是引發(fā)了意外。

const numbers = [1, 2, 3];
 const result = numbers.map(n => { value: n });
 // produces [undefined], [undefined], [undefined]

什么原因造成的呢?

稍微分析可知,引起上面問題在于,箭頭函數(shù)內(nèi)部包裹在花括號之間的代碼,被認(rèn)為是一段獨立的代碼塊而不是對象字面量,因此其單獨執(zhí)行,顯然得到的結(jié)果就是一個全為undefined的數(shù)組。
于是,在這種情況下,其中的代碼就必須有明確的返回語句或者用圓括號()包括對象字面量。

const result = numbers.map(n => ({ value: n }));
 // [{value: 1}, {value:2}, {value:3}]

關(guān)于this

第二個問題是關(guān)于箭頭函數(shù)與this。

使用箭頭函數(shù),你可以像下面這樣寫代碼而不用額外在局部作用域中去暫存this:

const adder = {
  sum: 0,
  add(numbers) {
   numbers.forEach(n => {
    this.sum += n;
   });
  }
 };
 adder.add([1, 2, 3]);
 // adder.sum === 6

然而,很多時候你可能會自以為是的在不經(jīng)意間寫錯。正如下面的代碼所示,this并不指向”adder”對象,而指向”adder”對象所在的作用域:

const adder = {
  sum: 0,
  add: (numbers) => { // scope here is important
   numbers.forEach(n => {
    this.sum += n;
   });
  }

 };

 adder.add([1, 2, 3]);
 // adder.sum === 0

最后請記住一點:箭頭函數(shù)中的this繼承自外圍作用域的值,因此我們不能改變其指向。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • uni-app實現(xiàn)獲取驗證碼倒計時功能

    uni-app實現(xiàn)獲取驗證碼倒計時功能

    這篇文章主要為大家詳細(xì)介紹了uni-app實現(xiàn)獲取驗證碼倒計時功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • file控件選擇上傳文件確定后觸發(fā)的js事件是哪個

    file控件選擇上傳文件確定后觸發(fā)的js事件是哪個

    這篇文章主要介紹了file控件選擇上傳文件確定后觸發(fā)了什么js事件,需要的朋友可以參考下
    2014-03-03
  • 基于js實現(xiàn)微信發(fā)送好友如何分享到朋友圈、微博

    基于js實現(xiàn)微信發(fā)送好友如何分享到朋友圈、微博

    微信瀏覽器內(nèi)置了javascript私有對象WeixinJSBridge,可以實現(xiàn)發(fā)送給朋友、分享到朋友圈、分享到微博等功能,本篇文章給大家介紹基于js實現(xiàn)微信發(fā)送給朋友如何分享到朋友圈、微博,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11
  • javascript trie前綴樹的示例

    javascript trie前綴樹的示例

    這篇文章主要介紹了javascript trie單詞查找樹的示例,詳細(xì)的介紹了trie的概念和實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談JS的基礎(chǔ)類型與引用類型

    淺談JS的基礎(chǔ)類型與引用類型

    下面小編就為大家?guī)硪黄獪\談JS的基礎(chǔ)類型與引用類型。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 利用JavaScript實現(xiàn)靜態(tài)圖片局部流動效果

    利用JavaScript實現(xiàn)靜態(tài)圖片局部流動效果

    如果你有玩過《王者榮耀》、《陰陽師》?等手游,一定注意到過它的啟動動畫、皮膚立繪卡片等場景,經(jīng)常采用靜態(tài)底圖加局部液態(tài)流動效果的簡單動畫,本文將利用JavaScript實現(xiàn)這一效果,需要的可以參考一下
    2022-08-08
  • Javascript實現(xiàn)簡單二級下拉菜單實例

    Javascript實現(xiàn)簡單二級下拉菜單實例

    這篇文章主要介紹Javascript實現(xiàn)二級下拉菜單的具體過程,需要的朋友可以參考下
    2014-06-06
  • JavaScript面向?qū)ο蠛诵闹R與概念歸納整理

    JavaScript面向?qū)ο蠛诵闹R與概念歸納整理

    這篇文章主要介紹了JavaScript面向?qū)ο蠛诵闹R與概念,整理總結(jié)了JavaScript面向?qū)ο蟪绦蛟O(shè)計中基本概念、原理與操作注意事項,需要的朋友可以參考下
    2020-05-05
  • JavaScript懶加載詳解

    JavaScript懶加載詳解

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)頁面數(shù)據(jù)懶加載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • js 實現(xiàn)獲取name 相同的頁面元素并循環(huán)遍歷的方法

    js 實現(xiàn)獲取name 相同的頁面元素并循環(huán)遍歷的方法

    下面小編就為大家?guī)硪黄猨s 實現(xiàn)獲取name 相同的頁面元素并循環(huán)遍歷的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論