成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6 箭頭函數(shù)(arrow function)

Arno / 1911人閱讀

摘要:因為箭頭函數(shù)沒有構(gòu)造方法。因為不能一個箭頭函數(shù),所以也沒必要有了。的值在這個箭頭函數(shù)的整個生命周期里面都不變。你必須通過命名參數(shù)和剩余參數(shù)去獲取箭頭函數(shù)的參數(shù)。非箭頭函數(shù)在非嚴格模式下面可以有重名參數(shù)。

例行聲明:接下來的文字內(nèi)容全部來自 Understanding ECMAScript 6,作者是Nicholas C.Zakas,也就是大名鼎鼎的Professional JavaScript for Web Developers(《JavaScript高級程序設(shè)計》)的作者。我很喜歡他的寫作風格,所以在看了Understanding ECMAScript 6后試著自己寫篇博客梳理一下,相當于簡單地翻譯和鞏固一下吧。在此特別感謝Nicholas的原創(chuàng),我只是一個小矮人,站在巨人的肩膀上,所以看到了原本看不到的風景。
原文鏈接:https://leanpub.com/understan...

1: 什么是箭頭函數(shù)?
箭頭函數(shù),顧名思義就是用箭頭(=>來定義的函數(shù),不會用到關(guān)鍵字‘function’),例如:

let sum = (a, b)=> {return a + b;}

效果等同于:

var sum = function(a, b){return a + b;} 

但是,事實上上面兩個function存在很多不同,會在之后的第三點講解。

2: 箭頭函數(shù)的多種定義方式
箭頭函數(shù)的定義形式有很多種(這也是我不喜歡的一點,呵呵),具體的有:

1: 什么情況下都可以型

let sum = (a, b)=>{return a + b;}

這種是最常用,最通用的形式。

2: 只有一個參數(shù)型

let self = num1 => {return num1;}

可以看到相對第一種定義的區(qū)別是:沒有用()包圍參數(shù). 這種形式只可以在這種情況下用。

3: 沒有參數(shù)型

let functionA = ()=> {return "hehe";}

當沒有參數(shù)時,必須要有"()"。

4: 兩個參數(shù)及其以上型

let sum = (a, b) => {return a + b;}

當有兩個及其以上的參數(shù)時,也必須要用‘()’把參數(shù)括起來。

5:沒有return&&沒有{}

let sum = (a, b) => a + b;

你可以同時不給return關(guān)鍵字和{},效果`等同`于上面的第4種情況

6: 沒有return && 有{}

let sum = (a, b)=> {a + b;}

這種情況不等于第5種,這種情況下`"a+b"`并不會作為這個函數(shù)的返回值,如果你調(diào)用這個函數(shù),得到的結(jié)果`‘undefined’`

7: 有return && 沒有{}

let sum = (a, b)=> return a + b;

不要作死,這種寫法直接給你一個syntaxError.

注明,以上的第5,6,7點針對的是函數(shù)方法體的部分,不論函數(shù)參數(shù)是幾個,結(jié)果沒有區(qū)別;同樣的,第2,3,4點針對的是函數(shù)的參數(shù)部分,不論函數(shù)的方法體怎么寫,對結(jié)果沒有影響。

3: 箭頭函數(shù)和一般的非箭頭函數(shù)的區(qū)別:

1: 沒有this, super, arguments和new.target綁定。一個箭頭函數(shù)里面的這幾個指由包含它的最近的非箭頭函數(shù)決定
2: 不能使用new來調(diào)用。因為箭頭函數(shù)沒有構(gòu)造方法。
3: 沒有[prototype]屬性。因為不能new一個箭頭函數(shù),所以prototype也沒必要有了。
4: 不能改變this的值。this的值在這個箭頭函數(shù)的整個生命周期里面都不變。
5: 沒有arguments。你必須通過命名參數(shù)和剩余參數(shù)去獲取箭頭函數(shù)的參數(shù)。
6: 不能有重名參數(shù)。非箭頭函數(shù)在非嚴格模式下面可以有重名參數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/81595.html

相關(guān)文章

  • 探索ES2015:箭頭函數(shù)Arrow Functions)

    摘要:注意箭頭函數(shù)有幾個使用注意點不可以使用對象,該對象在函數(shù)體內(nèi)不存在。不可以當作構(gòu)造函數(shù),也就是說,不可以使用命令,否則會拋出一個錯誤。不可以使用命令,因此箭頭函數(shù)不能用作函數(shù)。 前言 在JavaScript的世界中函數(shù)被譽為一等公民,每當我們需要在JS定義一個新的函數(shù),我們都會毫不猶豫的function() {},也許我們可以開始換一種方式來定義一個函數(shù),也就是本文的主角箭頭函數(shù),一個...

    pkwenda 評論0 收藏0
  • es6基礎(chǔ)0x024:babel簡單使用

    摘要:簡單的說就是,新語法編譯器舊語法。說明所以,對于新特性,我們可以通過使用,也可以通過語法轉(zhuǎn)化來達到兼容。 0x001 polyfill 我們都知道,js總是一直存在著兼容性問題,雖然其他語言也存在著兼容性問題,比如c++、java,但那種兼容性是新特性在舊版本上的不兼容,js則存在著各種奇形怪哉的不兼容。這其中有著非常復(fù)雜的歷史和時代的原因,并不加以累述。而解決兼容性問題的方法在以前只...

    wangbinke 評論0 收藏0
  • JavaScript 的 this 指向問題深度解析

    摘要:而改變了這種狀態(tài),雖然定義的類用運算符得到的仍然是,但它不能像普通函數(shù)一樣直接調(diào)用同時,中定義的方法函數(shù),也不能當作構(gòu)造函數(shù)用來調(diào)用。而在中,用調(diào)用一個構(gòu)造函數(shù),會創(chuàng)建一個新對象,而其中的就指向這個新對象。 JavaScript 中的 this 指向問題有很多博客在解釋,仍然有很多人問。上周我們的開發(fā)團隊連續(xù)兩個人遇到相關(guān)問題,所以我不得不將關(guān)于前端構(gòu)建技術(shù)的交流會延長了半個時候討論 ...

    liuchengxu 評論0 收藏0
  • ES6學(xué)習筆記之箭頭函數(shù)

    摘要:特性介紹箭頭函數(shù)是新增的特性之一,它為這門語言提供了一種全新的書寫函數(shù)的語法。用生成的函數(shù)會定義一個自己的,而箭頭函數(shù)沒有自己的,而是會和上一層的作用域共享。 本文同步自我得博客:http://www.joeray61.com JS中的箭頭 箭頭在JS里并不算是個新鮮的玩意兒,一直以來,JS都支持-->這樣的箭頭。 很早的時候有些瀏覽器還不支持JS,當時的人們?yōu)榱思嫒葸@些瀏覽器,需要這...

    Vultr 評論0 收藏0
  • es6基礎(chǔ)0x001:箭頭函數(shù)

    摘要:這就是所謂的箭頭函數(shù)不綁定,而在我看來,回調(diào)函數(shù)就是箭頭函數(shù)最好的歸宿。 0x000 概述 箭頭函數(shù)有兩個作用: 更簡短的寫法 不綁定this 0x001 語法一表覽 ()=>{} ()=>{console.log(arrow);return null} ()=>hello (num1, num2)=>num1+num2 num=>++num ()=>({name:arrow})...

    stonezhu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<