最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

ES6標準新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))。

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

x => x * x

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

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]

但是,如果使用不當,可能會引發(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)部包裹在花括號之間的代碼,被認為是一段獨立的代碼塊而不是對象字面量,因此其單獨執(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)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • 用jscript實現(xiàn)新建word文檔

    用jscript實現(xiàn)新建word文檔

    用jscript實現(xiàn)新建word文檔...
    2007-06-06
  • 前端實現(xiàn)PDF文件預覽的7種方案與性能對比詳解

    前端實現(xiàn)PDF文件預覽的7種方案與性能對比詳解

    這篇文章主要為大家詳細介紹了前端實現(xiàn)PDF文件預覽的7種方案與性能對比,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • 使用JavaScript構(gòu)建一個動態(tài)交互式圖表

    使用JavaScript構(gòu)建一個動態(tài)交互式圖表

    在Web開發(fā)中,JavaScript不僅是實現(xiàn)交互效果的關(guān)鍵,還可以用于構(gòu)建復雜的可視化組件,如動態(tài)交互式圖表,下面我們就來看看如何構(gòu)建一個動態(tài)交互式圖表吧
    2024-02-02
  • js注冊時輸入合法性驗證方法

    js注冊時輸入合法性驗證方法

    這篇文章主要為大家詳細介紹了js注冊時輸入合法性驗證方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • JS實現(xiàn)圖片延遲加載并淡入淡出效果的簡單方法

    JS實現(xiàn)圖片延遲加載并淡入淡出效果的簡單方法

    我們大家都知道,對于一個網(wǎng)站最占用帶寬,最影響頁面顯示速度的東西就是圖片。圖片是很重要的,作為一個站長我們是千方百計的使用各種技巧來優(yōu)化圖片,但其實有一種簡單的方法,只需要幾行代碼就能達到這種效果。同時還附加一種淡入淡出的顯示效果,下面一起來看看。
    2016-08-08
  • setTimeout 函數(shù)在前端延遲搜索實現(xiàn)中的作用詳解

    setTimeout 函數(shù)在前端延遲搜索實現(xiàn)中的作用詳解

    這篇文章主要為大家介紹了setTimeout 函數(shù)在前端延遲搜索實現(xiàn)中的作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • JS中如何實現(xiàn)復選框全選功能

    JS中如何實現(xiàn)復選框全選功能

    本文通過實例代碼給大家介紹了js中實現(xiàn)復選框全選功能,代碼簡單易懂,非常不錯,需要的朋友參考下
    2016-12-12
  • webpack打包進度展示以及美化教程

    webpack打包進度展示以及美化教程

    webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler),下面這篇文章主要給大家介紹了關(guān)于webpack打包進度展示以及美化的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • 一篇文章看懂JavaScript中的回調(diào)

    一篇文章看懂JavaScript中的回調(diào)

    這篇文章主要給大家介紹了如何通過一篇文章看懂JavaScript中的回調(diào),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • BootStrap selectpicker

    BootStrap selectpicker

    這篇文章主要介紹了BootStrap selectpicker 的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06

最新評論

赤城县| 磐石市| 虎林市| 五莲县| 礼泉县| 安徽省| 宜兴市| 巴彦淖尔市| 仪征市| 湘阴县| 新建县| 沧州市| 玛纳斯县| 平利县| 托克托县| 沙雅县| 阳朔县| 庐江县| 池州市| 甘谷县| 台江县| 余姚市| 大理市| 叶城县| 蓬莱市| 岫岩| 彝良县| 武隆县| 武陟县| 苏尼特左旗| 博野县| 罗江县| 三河市| 平和县| 新津县| 利津县| 勐海县| 将乐县| 旬邑县| 东丰县| 宾阳县|