摘要:箭頭函數(shù)是中最具影響力的變化之一,它們現(xiàn)在被廣泛使用。自引入箭頭函數(shù)以來(lái),它徹底改變了代碼的編寫方式。與常規(guī)函數(shù)相比,箭頭函數(shù)的指向不同。箭頭函數(shù)也不能用作構(gòu)造函數(shù),當(dāng)實(shí)例化對(duì)象時(shí)會(huì)引發(fā)。處理事件時(shí)也是同樣的問(wèn)題。
箭頭函數(shù)是ES6 / ES2015中最具影響力的變化之一,它們現(xiàn)在被廣泛使用。
自引入箭頭函數(shù)以來(lái),它徹底改變了JavaScript代碼的編寫方式。
這是一個(gè)簡(jiǎn)單而受歡迎的變化,它允許您使用更短的語(yǔ)法編寫函數(shù),比如:
const myFunction = function foo() { //... }
to
const myFunction = () => { //... }
如果函數(shù)體只包含一行語(yǔ)句,則可以省略花括號(hào):
const myFunction = () => doSomething()
傳遞參數(shù):
const myFunction = (param1, param2) => doSomething(param1, param2)
如果只有一個(gè)參數(shù),則可以省略括號(hào):
const myFunction = param => doSomething(param)隱式返回
箭頭函數(shù)具有隱式返回:返回值不必使用return關(guān)鍵字。
函數(shù)體中只有一行語(yǔ)句時(shí)有效:
const myFunction = () => "test" //返回"test" myFunction()
另一個(gè)例子,返回一個(gè)對(duì)象(記得在花括號(hào)外加一對(duì)大括號(hào),避免它被認(rèn)為是函數(shù)體的括號(hào)):
const myFunction = () => ({value: "test"}) //返回{value: "test"} myFunction()this在箭頭函數(shù)中是如何使用的
this根據(jù)上下文環(huán)境而不同,也取決于JavaScript的模式(是否是嚴(yán)格模式)。
與常規(guī)函數(shù)相比,箭頭函數(shù)的this指向不同。
當(dāng)定義為對(duì)象的方法時(shí),在常規(guī)函數(shù)中,它指的是對(duì)象,可以這樣做:
const car = { model: "Fiesta", manufacturer: "Ford", fullName: function() { return `${this.manufacturer} {this.model}` } }
返回字符串 "Ford Fiesta"
箭頭函數(shù)的作用域繼承自運(yùn)行環(huán)境,所以代碼car.fullName()將不起作用,將返回字符串“undefined undefined”:
const car = { model: "Fiesta", manufacturer: "Ford", fullName: () => { return `${this.manufacturer} $ {this.model}` } }
因此,箭頭函數(shù)不適合作為對(duì)象方法。
箭頭函數(shù)也不能用作構(gòu)造函數(shù),當(dāng)實(shí)例化對(duì)象時(shí)會(huì)引發(fā)TypeError。
處理事件時(shí)也是同樣的問(wèn)題。 DOM事件偵聽器將this設(shè)置為目標(biāo)元素,如果您在事件處理程序中依賴this,則需要常規(guī)函數(shù):
const link = document.querySelector("#link") link.addEventListener("click", () => { // this === window })
const link = document.querySelector("#link") link.addEventListener("click", function() { // this === link })
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105255.html
摘要:它是一個(gè)通用標(biāo)準(zhǔn),奠定了的基本語(yǔ)法。年月發(fā)布了的第一個(gè)版本,正式名稱就是標(biāo)準(zhǔn)簡(jiǎn)稱。結(jié)語(yǔ)的基本擴(kuò)展還有一些沒(méi)有在這里詳細(xì)介紹。 前言 ES6標(biāo)準(zhǔn)以及頒布兩年了,但是,好像還沒(méi)有完全走進(jìn)我們的日常開發(fā)。這篇文章從ES6的基本類型擴(kuò)展入手,逐步展開對(duì)ES6的介紹。 ECMAScript和JavaScript JavaScript是由Netscape創(chuàng)造的,該公司1996年11月將JavaSc...
摘要:下例實(shí)現(xiàn)了一個(gè)數(shù)組的迭代器在中,可迭代數(shù)據(jù)結(jié)構(gòu)比如數(shù)組都必須實(shí)現(xiàn)一個(gè)名為的方法,該方法返回一個(gè)該結(jié)構(gòu)元素的迭代器。原話是還可以傳遞返回值。 前記 按照規(guī)劃,明年年中,ECMAScript 6(ES6)就要正式發(fā)布了。 最近抽空看了Dr. Axel Rauschmayer的幾篇文章和演講PPT,對(duì)新特性有了些了解。 趁沒(méi)忘,抓緊記錄下,夾雜自己的感受。 計(jì)劃分三部分: 新語(yǔ)法...
摘要:第二種接口的概念和面向?qū)ο缶幊滔嚓P(guān)接口視為一份合約,在合約里可以定義這份合約的類或接口的行為接口告訴類,它需要實(shí)現(xiàn)一個(gè)叫做的方法,并且該方法接收一個(gè)參數(shù)。 定場(chǎng)詩(shī) 八月中秋白露,路上行人凄涼; 小橋流水桂花香,日夜千思萬(wàn)想。 心中不得寧?kù)o,清早覽罷文章, 十年寒苦在書房,方顯才高志廣。 前言 洛伊安妮·格羅納女士所著的《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》第三版于2019年的5月份...
摘要:使用箭頭函數(shù)和構(gòu)造函數(shù)當(dāng)方法被調(diào)用時(shí),會(huì)保留上下文。我們能使用這個(gè)特征用下面的方法在構(gòu)造函數(shù)中重定義函數(shù)。在調(diào)用方法的方使用函數(shù)綁定語(yǔ)法你也可以直接在非構(gòu)造函數(shù)里面的里面直接使用函數(shù)綁定。 這是React和ECMAScript6/ECMAScript7結(jié)合使用系列文章的第三篇。 下面是所有系列文章章節(jié)的鏈接: React 、 ES6 - 介紹(第一部分) React類、ES7屬性初始...
摘要:對(duì)象的解構(gòu)賦值函數(shù)執(zhí)行后,返回的是一個(gè)對(duì)象。分別取出對(duì)象中屬性為和的值,根據(jù)解構(gòu)賦值的規(guī)則,在左側(cè)聲明變量,放在大括號(hào)中,變量名要和屬性名保持一致。箭頭函數(shù)在中,箭頭函數(shù)就是函數(shù)的一種簡(jiǎn)寫形式允許使用箭頭定義函數(shù)。 原文博客地址,歡迎學(xué)習(xí)交流:點(diǎn)擊預(yù)覽 聲明變量 可以使用let、const關(guān)鍵字聲明變量,而不推薦使用var聲明變量 var聲明變量的問(wèn)題: 可以多次重復(fù)聲明同一個(gè)變量...
閱讀 1751·2021-09-28 09:43
閱讀 1111·2021-09-23 11:22
閱讀 2707·2021-09-14 18:05
閱讀 1823·2019-08-30 15:52
閱讀 2812·2019-08-30 10:55
閱讀 2007·2019-08-29 16:58
閱讀 1323·2019-08-29 16:37
閱讀 3031·2019-08-29 16:25