<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript高階函數(shù)的詳細介紹(附代碼)

        來源:懂視網 責編:小采 時間:2020-11-27 19:27:13
        文檔

        JavaScript高階函數(shù)的詳細介紹(附代碼)

        JavaScript高階函數(shù)的詳細介紹(附代碼):本篇文章給大家?guī)淼膬热菔顷P于JavaScript高階函數(shù)的詳細介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。把函數(shù)以數(shù)據(jù)的形式去使用,并解鎖一些強大的模式。高階函數(shù)接受和/或返回另外一個函數(shù)的函數(shù)被稱為高階函數(shù)。之所
        推薦度:
        導讀JavaScript高階函數(shù)的詳細介紹(附代碼):本篇文章給大家?guī)淼膬热菔顷P于JavaScript高階函數(shù)的詳細介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。把函數(shù)以數(shù)據(jù)的形式去使用,并解鎖一些強大的模式。高階函數(shù)接受和/或返回另外一個函數(shù)的函數(shù)被稱為高階函數(shù)。之所
        本篇文章給大家?guī)淼膬热菔顷P于JavaScript高階函數(shù)的詳細介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

        把函數(shù)以數(shù)據(jù)的形式去使用,并解鎖一些強大的模式。

        1354044822-5c89cf2124ccc_articlex.png

        高階函數(shù)

        接受和/或返回另外一個函數(shù)的函數(shù)被稱為高階函數(shù)。

        之所以是高階,是因為它并非字符串、數(shù)字或布爾值,而是從更高層次來操作函數(shù)。漂亮的元。

        使用 JavaScript 中的函數(shù),你可以

      1. 將它們存儲為變量
      2. 在數(shù)組中使用它們
      3. 將它們指定為對象屬性(方法)
      4. 將它們作為參數(shù)進行傳遞
      5. 將它們從其他函數(shù)中返回
      6. 就像所有的其他數(shù)據(jù)一樣。這是關鍵所在。

        函數(shù)操作數(shù)據(jù)

        字符串是數(shù)據(jù)

        sayHi = (name) => `Hi, ${name}!`;
        result = sayHi('User');
        console.log(result); // 'Hi, User!'

        數(shù)字是數(shù)據(jù)

        double = (x) => x * 2;
        result = double(4);
        console.log(result); // 8

        布爾型是數(shù)據(jù)

        getClearance = (allowed) => allowed ?
         'Access granted' :
         'Access denied';
        result1 = getClearance(true);
        result2 = getClearance(false);
        console.log(result1); // 'Access granted'
        console.log(result2); // 'Access denied'

        對象是數(shù)據(jù)

        getFirstName = (obj) => obj.firstName;
        result = getFirstName({
         firstName: 'Yazeed'
        });
        console.log(result); // 'Yazeed'

        數(shù)組是數(shù)據(jù)

        len = (array) => array.length;
        result = len([1, 2, 3]);
        console.log(result); // 3

        這5種類型是所有主流語言中的一等公民。

        是什么使他們成為一等公民的?你可以傳遞它們,將它們存儲在變量和數(shù)組中,將它們用作計算的輸入。你可以像使用任何數(shù)據(jù)一樣去使用它們。

        函數(shù)也可以作為數(shù)據(jù)的形式去用

        1045104004-5c89cf0a7f7d7_articlex.png

        在javascript中把函數(shù)用作數(shù)據(jù)的4種方式:

        1. 把它們當作參數(shù)傳給其它函數(shù)
        2. 把他們設定成對象屬性
        3. 保存在數(shù)組中
        4. 把它們設為變量的形式

        作為參數(shù)的函數(shù)

        isEven = (num) => num % 2 === 0;
        result = [1, 2, 3, 4].filter(isEven);
        console.log(result); // [2, 4]

        看看 filter 是如何用 isEven 來決定保留哪些數(shù)字的? isEven是一個函數(shù),是另一個函數(shù)的參數(shù)

        它由每個數(shù)字的 filter 調用,并使用返回值 truefalse 來確定這個數(shù)字是否應該保留或丟棄。

        返回函數(shù)

        add = (x) => (y) => x + y;

        add 需要兩個參數(shù),但不是一次全部提供。這是一個只需要 x 的函數(shù),它返回一個只需要y的函數(shù)。因為 JavaScript 允許函數(shù)成為返回值 —— 就像字符串、數(shù)字、布爾值那樣。

        如果你愿意,仍然可以立即提供 xy,并進行雙重調用

        result = add(10)(20);
        console.log(result); // 30

        或者先 xy

        add10 = add(10);
        result = add10(20);
        console.log(result); // 30

        讓我們回過頭來看最后一個例子。 add10 是用一個參數(shù)調用 add 的結果。并控制臺中輸出它。

        3073584220-5c89cf38a64e6_articlex.png

        add10 是一個函數(shù),它接受一個 y 并返回 x + y。在你提供 y 之后,它會馬上計算并返回你所要的最終結果。

        3944606209-5c89cf44e479e_articlex.png

        更高的可重用性

        高階函數(shù)的最大好處可能是更高的可重用性。沒有它,JavaScript 數(shù)組的主要方法 —— mapfilterreduce 將不存在!

        這是一個用戶列表。我們將對他們的信息進行一些計算。

        users = [{
         name: 'Yazeed',
         age: 25
        }, {
         name: 'Sam',
         age: 30
        }, {
         name: 'Bill',
         age: 20
        }];

        Map

        如果沒有高階函數(shù),我們需要用循環(huán)來模仿 map 的功能。

        getName = (user) => user.name;
        usernames = [];
        for (let i = 0; i < users.length; i++) {
         const name = getName(users[i]);
         usernames.push(name);
        }
        console.log(usernames);
        // ["Yazeed", "Sam", "Bill"]

        或者我們可以這樣做!

        usernames = users.map(getName);
        console.log(usernames);
        // ["Yazeed", "Sam", "Bill"]

        Filter

        在沒有高階函數(shù)的世界中,我們仍然需要循環(huán)來重新實現(xiàn) filter 的功能。

        startsWithB = (string) => string
         .toLowerCase()
         .startsWith('b');
        namesStartingWithB = [];
        for (let i = 0; i < users.length; i++) {
         if (startsWithB(users[i].name)) {
         namesStartingWithB.push(users[i]);
         }
        }
        console.log(namesStartingWithB);
        // [{ "name": "Bill", "age": 20 }]

        或者我們可以這樣做!

        namesStartingWithB = users
         .filter((user) => startsWithB(user.name));
        console.log(namesStartingWithB);
        // [{ "name": "Bill", "age": 20 }]

        Reduce

        是的,reduce......沒有更高階的功能,實現(xiàn)不了那么多很酷的東西!!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript高階函數(shù)的詳細介紹(附代碼)

        JavaScript高階函數(shù)的詳細介紹(附代碼):本篇文章給大家?guī)淼膬热菔顷P于JavaScript高階函數(shù)的詳細介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。把函數(shù)以數(shù)據(jù)的形式去使用,并解鎖一些強大的模式。高階函數(shù)接受和/或返回另外一個函數(shù)的函數(shù)被稱為高階函數(shù)。之所
        推薦度:
        標簽: 介紹 代碼 的代碼
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: caoporn国产精品免费| 精品久久久久亚洲| 久久久久久成人毛片免费看| 不卡一卡二卡三亚洲| 免费国产黄线在线观看| 亚洲a∨无码男人的天堂| 在线观看免费a∨网站| 亚洲av无码一区二区三区天堂| 看全色黄大色大片免费久久| 国产精品亚洲а∨无码播放不卡| 免费一级毛片不卡不收费| 美女露100%胸无遮挡免费观看| 亚洲成a人无码av波多野按摩| 久久精品免费大片国产大片| 黑人精品videos亚洲人| 99re免费在线视频| 国产.亚洲.欧洲在线| 免费观看日本污污ww网站一区| 一级成人a做片免费| 亚洲无av在线中文字幕| 7m凹凸精品分类大全免费| 亚洲av无码电影网| 亚洲国产一成久久精品国产成人综合 | 亚洲国产一区在线观看| 噜噜嘿在线视频免费观看| 免费无码又爽又黄又刺激网站 | 国产免费人成视频在线观看| 久久久久免费视频| 18gay台湾男同亚洲男同| 日本高清免费不卡在线| 两个人看的www视频免费完整版| 2022年亚洲午夜一区二区福利| 日本v片免费一区二区三区| 国产伦精品一区二区免费| 亚洲人成片在线观看| 亚洲午夜精品一级在线播放放| 无码国产精品一区二区免费3p | 久久久久久一品道精品免费看| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 91免费福利精品国产| 亚洲Av永久无码精品一区二区|