成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

=> 箭頭函數 · 方便、快捷,也要小心坑

開發 前端
箭頭函數是必須要掌握的,今天我們一起來學習一下,它給開發者帶來方便的同時,也要留意它的「無能」。

箭頭函數是必須要掌握的,今天我們一起來學習一下,它給開發者帶來方便的同時,也要留意它的「無能」。先看一個例子:

  1. const names = [ 
  2.     'wsy', 
  3.     'suyan', 
  4.     '前端小課' 
  5. ]; 
  6. let lengths = names.map(name => name.length); 
  7. console.log('lengths = ', lengths); 

結果如圖:

[[315154]]

先看下它的語法:

1. 無參數

  1. function call(callback) { 
  2.     callback(); 
  3. call(() => { 
  4.     console.log('arrow void'); 
  5. }); 
  6. // 箭頭函數類似于下面這個函數 
  7. call(function () { 
  8.     console.log('void'); 
  9. }); 

2. 只有一個參數,無返回值

  1. function call(callback) { 
  2.     callback('前端小課'); 
  3. call(name => { 
  4.     console.log('arrow', name); 
  5. }); 
  6. // 箭頭函數類似于下面這個函數 
  7. call(function (name) { 
  8.     console.log(name); 
  9. }); 

3. 只有一個參數,有返回值

  1. function call(callback) { 
  2.     // 返回值為 4 
  3.     let len = callback('前端小課'); 
  4.     console.log(len); 
  5.  
  6. // 只有一行表達式省略大括號 
  7. call(name => name.length); 
  8. // 類似于這個 
  9. call(name => { 
  10.     return name.length; 
  11. }); 
  12. // 箭頭函數類似于下面這個函數 
  13. call(function (name) { 
  14.     return name.length; 
  15. }); 

4.有多個參數,有返回值

  1. function call(callback) { 
  2.     let len = callback(1, 2, 3); 
  3.     console.log(len); // 6 
  4.  
  5. // 多個個參數,有返回值,只有一行表達式省略大括號 
  6. call((a, b, c) => a + b + c); 
  7. // 類似與這個 
  8. call((a, b, c) => { 
  9.     return a + b + c; 
  10. }); 
  11. // 箭頭函數類似于下面這個函數 
  12. call(function (a, b, c) { 
  13.     return a + b + c; 
  14. }); 

從上面這些例子可以知道,每個箭頭函數都能寫出一個與其功能相同的普通函數,那為什么還用箭頭函數?

在 連接你、我、他 —— this 這節課程中使用箭頭函數解決了 this 指向的問題。不知道你們有沒有發現當寫下面這兩個函數的時候,VSCode 默認使用的是箭頭函數:

  1. setTimeout(() => { 
  2.     // 這里是箭頭函數 
  3. }, 100); 
  4.  
  5. setInterval(() => { 
  6.     // 這個是箭頭函數 
  7. }, 200); 

使用箭頭函數有幾點需要留意:

1. 讓函數更簡短,上面例 3 就是一個很好的例子;

2. 沒有自己的 this 和 argument,比如有如下代碼:

  1. let person = { 
  2.     name: 'suyan', 
  3.     showName: function (age) { 
  4.         window.setTimeout(() => { 
  5.             console.log('this = ', this); 
  6.             console.log('arguments = ', arguments); 
  7.             console.log(this.name, age); 
  8.         }, 100); 
  9.     } 
  10. }; 
  11. person.showName(20); 

打印結果為:

3. 不能作為構造函數;

  1. let Dog = name => { 
  2.     this.name = name; 
  3. }; 
  4. // 錯誤 Uncaught TypeError: Dog is not a constructor 
  5. let aDog = new Dog('fe'); 
  6.  
  7. let Dog2 = function (name) { 
  8.     this.name = name; 
  9. }; 
  10. // 正確 
  11. let aDog2 = new Dog2('fe'); 

4. 箭頭函數沒有 prototype 屬性:

  1. let Dog = name => { 
  2.     this.name = name; 
  3. }; 
  4. Dog.prototype; // undefined 

5.不能通過 call、apply 綁定 this

  1. var name = 'I am widow'
  2.  
  3. let animal = { 
  4.     name: 'animal', 
  5.     showName: age => { 
  6.         console.log('this = ', this); 
  7.         console.log('name | age = ', this.name, age); 
  8.     } 
  9. }; 
  10. let dog = { 
  11.     name: 'dog' 
  12. }; 
  13.  
  14. animal.showName.call(dog, 20); 
  15. animal.showName.apply(dog, [21]); 
  16. let bindName = animal.showName.bind(dog, 22); 
  17. bindName(); 

運行代碼,結果如下:

由于箭頭函數沒有 this 指針,不能通過 call、apply、bind 的方式來修改 this。只能傳遞參數,this 參數將被忽略。

責任編輯:趙寧寧 來源: 素燕
相關推薦

2025-05-08 10:10:00

箭頭函數JavaScript開發

2009-12-03 09:23:17

PHP長文章分頁函數

2022-03-21 19:24:15

Objects方法false

2022-11-14 07:08:23

Python函數參數

2021-02-24 09:43:36

MySQL數據庫雙引號

2023-01-05 07:55:59

Zookeeper服務注冊

2021-07-28 05:01:29

Lombok前端測試

2023-06-20 08:25:53

NESTED源碼mybatis

2022-04-21 07:34:34

JDK8JDK7數據

2011-04-21 17:09:09

掃描儀

2019-04-24 16:12:59

iOSSiriMacOS

2022-04-21 09:48:54

JDK8JDK7編碼

2011-05-06 14:12:49

投影機

2020-12-16 09:47:01

JavaScript箭頭函數開發

2021-03-30 15:10:50

Java序列化

2020-03-17 21:53:09

路由器WiFi信號

2010-01-21 08:57:48

2025-05-15 08:40:00

2020-03-13 08:41:47

無線路由器路由器無線技術

2021-08-05 16:36:16

Windows 11操作系統微軟
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线小视频 | 国产高清在线精品一区二区三区 | 国产欧美精品一区二区色综合朱莉 | 日韩精品在线播放 | 日韩欧美一区二区三区免费观看 | 99re6热在线精品视频播放 | 亚洲一区二区三区四区五区中文 | 久久精品视频亚洲 | 91在线视频免费观看 | 日本不卡视频 | 日本天堂视频在线观看 | 亚洲国产精品人人爽夜夜爽 | 精品美女在线观看视频在线观看 | 色吧色综合 | 国产精品一区二区在线观看 | 国产精品久久久久久一级毛片 | 国产最新网址 | 日韩欧美综合在线视频 | 日韩高清成人 | 韩日一区二区三区 | 男人午夜视频 | 蜜桃免费一区二区三区 | 在线观看亚洲专区 | 欧美日韩在线观看一区二区三区 | 精品欧美一区二区三区久久久 | 午夜性色a√在线视频观看9 | 国产精品欧美一区二区 | 国产中文字幕在线 | 欧洲一级视频 | 亚洲 欧美 日韩 在线 | 色综合久久88色综合天天 | 久久久精彩视频 | 亚洲国产精品久久久久久 | 毛片入口 | 第四色狠狠 | 久久久久久高潮国产精品视 | 99久久精品视频免费 | 国产精品亚洲一区二区三区在线 | 精品国产一区二区三区在线观看 | 日韩久久久久久久久久久 | 国产精品综合久久 |