91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用ES6箭頭函數

發布時間:2021-11-04 15:27:33 來源:億速云 閱讀:129 作者:iii 欄目:web開發

這篇文章主要介紹“怎么使用ES6箭頭函數”,在日常操作中,相信很多人在怎么使用ES6箭頭函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么使用ES6箭頭函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

ES6箭頭函數似乎是一種很上癮的函數,一旦了解你很容易用到停不下來。作為2015年ECMAScript  6更新的一部分,箭頭函數有充分理由迅速流行。箭頭函數語法是極好的語法糖,能解決很多需求:

  • 函數關鍵字

  • 花括號

  • return關鍵字(對于單行函數)

此外,箭頭函數還降低了JavaScript的函數范圍以及this關鍵字的部分復雜性,因為有時真正需要的只是一個匿名函數。

但事實上,箭頭函數并不一定能解決編寫JavaScript函數時的每一項需求。

對象原型

先看JavaScript代碼片段:

classRobot {        constructor(name,catchPhrase) {          this.name= name;          this.catchPhrase= catchPhrase;        }      };      Robot.prototype.speak= () => {        console.log(this === window);        return this.catchPhrase      };      const ironG =newRobot("Iron Giant", "Be good");      ironG.speak();

第15行的函數調用如下:

true undefined

定義了speak() 原型函數,并為新Robot對象傳遞了口號,那為什么這段代碼的計算結果是未定義的呢?

console.log()揭示了原因。如你所見,當要求控制臺判斷(this ===  window)時,它返回true。這為上文對象方法示例中討論的內容提供了依據。

當使用需要上下文的函數時,必須使用常規函數語法,以便使this正確綁定:

Robot.prototype.speak=function() {                       console.log(this === ironG); // true                       return this.catchphrase;                     };

對象方法

假設想要創建一個綁定到對象的方法。

const mario = {          lives: 3,          oneUp: () => {              this.lives++;          }      }

這個例子中,如調用mario.oneUp(),mario.lives的值應該從3增加到4。然而,按照目前所寫的代碼,無論調用多少次oneUp(),  lives的值都將保持不變。

為什么?正是因為this!

正如MDN所述:箭頭函數自身沒有this。使用了封閉詞法范圍的this值;箭頭函數遵循正常的變量查找規則。因此,當搜索當前作用域中不存在的this時,箭頭函數最終會從其封閉作用域中找到this。

例子中,封閉的范圍是window對象。調用oneUp()會要求程序增加window對象中lives的值。這樣的值不存在,所以代碼不起作用。

相反,應該使用傳統的函數語法,它將函數的this綁定到調用該函數的特定對象上:

const mario = {        lives: 3,        oneUp: function() {          this.lives++;        }      };

動態上下文

最后一個例子:

const button = document.querySelector(#darkMode);                                 button.addEventListener('click', () => {                                   this.classList.toggle('on');                                 });

到目前為止,你可能已經意識到這個代碼無效及其原因。沒錯,這又和this有關。

箭頭函數語法在函數聲明時靜態地綁定上下文,這與使用事件處理程序或事件監聽器時試圖實現的相反,它們本質上是動態的。

當通過事件處理程序或監聽器操作DOM時,觸發的事件指向屬于目標元素的this。

對于全局執行上下文中定義的箭頭函數,this將指向window。因此,上面的代碼中,this.classList將被認為是window.classList,從而導致TypeError。

到此,關于“怎么使用ES6箭頭函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

es6
AI

柳州市| 永宁县| 平顺县| 揭东县| 大名县| 普安县| 台北县| 临泽县| 贵德县| 壤塘县| 永州市| 乌海市| 防城港市| 长泰县| 扬中市| 合水县| 青田县| 阳泉市| 襄城县| 崇信县| 准格尔旗| 洛浦县| 共和县| 大兴区| 洛宁县| 海南省| 南充市| 民丰县| 靖边县| 临潭县| 金塔县| 日喀则市| 墨玉县| 皮山县| 普兰县| 府谷县| 应城市| 襄汾县| 南郑县| 丰城市| 衡水市|