最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

探索JavaScript未來模式匹配的引入分析

 更新時間:2023年10月31日 08:58:46   作者:王大冶  
這篇文章主要來帶大家探索JavaScript的未來,關(guān)于模式匹配的引入為編程體驗帶來革命性變化分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

今天,揭開一個令人興奮的功能的面紗,這個功能通常在 Elixir 這樣的函數(shù)式編程語言中看到,現(xiàn)在被提議用于 JavaScript ——模式匹配。

"你好,JavaScript!"

動手試試。這里有一個超基礎(chǔ)的函數(shù)叫做 greet,它接受一個帶有'ID'和'role'的用戶,并根據(jù)用戶角色返回問候語。聽起來簡單嗎?

function greet({id, role}) {
    if (role == 'user'){
        return `Hello User ${id}`;
    }
    if (role == 'admin'){
        return `Hello Admin ${id}`;
    }
    if (role == 'owner'){
        return `Hello Owner ${id}`;
    }
    throw `Invalid role: ${role}`;
}

這很像一個 switch 語句,但我們很難說這完全準確——它笨拙,充斥著討厭的if 語句,對于一個未定義的角色還有一個錯誤陷阱。

function greet({id, role}) {
    switch (role){
        case 'user':
            return `Hello User ${id}`;
        case 'admin':
            return `Hello Admin ${id}`;
        case 'owner':
            return `Hello Owner ${id}`;
        default:
            throw `Invalid role: ${role}`;
    }
}

switch 還可以,但這里我們遇到了一個問題--如果不使用一些奇怪的黑客手段,例如在 true 上進行切換,它就無法完成足夠的工作。

簡化復(fù)雜性的模式匹配藝術(shù)

模式匹配可以結(jié)束這種復(fù)雜性。想象一個你有一個 when 子句可以救我們擺脫這種冗長的迷宮的世界。

簡單地說,模式匹配允許我們檢查一個輸入是否符合一個模式或一個特定的類型。

在繼續(xù)之前,需求注意的——現(xiàn)在看的是一個提議。所以,這可能還不是最終的語法。

let greet = match (input) {
  when { role: "user" }: `Hello User ${input.id}`,
  when { role: "admin" }: `Hello Admin ${input.id}`,
  when { role: "owner" }: `Hello Owner ${input.id}`,
  _: throw `Invalid role: ${input.role}`,
}

在這里,match函數(shù)接受輸入,when子句檢查 input 中的角色是否匹配指定的角色 - useradminowner

這樣更清晰,不是嗎?不再有 if或 switch clutter - 只有一個簡潔而干凈的表達式。這不僅允許更易讀和可維護的代碼,而且為基于輸入屬性的更簡單的“行內(nèi)”決策鋪平了道路,使條件、行為和結(jié)果非常容易同時閱讀。

這會改變JavaScript的未來嗎?

我真的相信模式匹配可以極大地改善JavaScript的未來。通過直接從Elixir這樣的其他語言中獲取關(guān)鍵的想法,并與JavaScript的強大靈活性結(jié)合,我們肯定可以為“JavaScript之家”增加一個頂石。

但是,我希望看到我們最喜歡的語言走得更遠,尤其是當模式匹配與函數(shù)定義結(jié)合使用時。這可能會讓我們走出舒適區(qū),但一旦你開始探索它,你就會意識到它所擁有的力量和它帶來的簡單性。

def greet(%{role: "user", id: id}), do: `Hello User #{id}`
def greet(%{role: "admin", id: id}), do: `Hello Admin #{id}`
def greet(%{role: "owner", id: id}), do: `Hello Owner #{id}`
def greet(%{role: _}), do: throw `Invalid role`

在這個 Elixir 代碼示例中,我們根據(jù)輸入重新定義了函數(shù)三次。除了它給予的直接清晰性外,解剖這一點,我們注意到它做了兩件事——它修剪了句法復(fù)雜性,顯著減少了理解代碼所需的心智負擔。

希望有一天JavaScript能夠?qū)崿F(xiàn)這種基于模式的函數(shù)重載,相信這將帶來一些最好的編程體驗。就JavaScript的未來而言,作者認為模式匹配是最令人興奮的前景之一。

以上就是JavaScript模式匹配的詳細內(nèi)容,更多關(guān)于JavaScript模式匹配的未來的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解如何使用mock.js實現(xiàn)接口測試的自動化

    詳解如何使用mock.js實現(xiàn)接口測試的自動化

    這篇文章主要為大家介紹了如何使用mock.js實現(xiàn)接口測試的自動化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 微信小程序template模板實例詳解

    微信小程序template模板實例詳解

    這篇文章主要介紹了微信小程序template模板使用的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這樣的功能,需要的朋友可以參考下
    2017-10-10
  • JavaScript實現(xiàn)優(yōu)先級隊列

    JavaScript實現(xiàn)優(yōu)先級隊列

    這篇文章主要介紹了JavaScript如何實現(xiàn)優(yōu)先級隊列,在計算機里,隊列是一種先進先出的數(shù)據(jù)結(jié)構(gòu)。就跟我們平時排隊一樣,先到的排在前面,前面的優(yōu)先處理,下面我們就來看看在JavaScript里面的優(yōu)先隊列又當如何
    2021-12-12
  • 詳解如何用js實現(xiàn)一個網(wǎng)頁版節(jié)拍器

    詳解如何用js實現(xiàn)一個網(wǎng)頁版節(jié)拍器

    這篇文章主要為大家介紹了詳解如何用js實現(xiàn)一個網(wǎng)頁版節(jié)拍器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 跨域設(shè)置Cookie失效問題解決方案原理分析

    跨域設(shè)置Cookie失效問題解決方案原理分析

    這篇文章主要為大家介紹了跨域設(shè)置Cookie失效問題解決方案原理分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 前端的狀態(tài)管理(下)

    前端的狀態(tài)管理(下)

    這篇文章主要介紹了前端的狀態(tài)管理,續(xù)上篇文章內(nèi)容,今天將從 Redux 入手逐漸拓展,需要的小伙伴可以參考一下喲
    2021-10-10
  • 在js中修改html body的樣式

    在js中修改html body的樣式

    這篇文章主要介紹了在js中修改html body的樣式,下面文章圍繞js修改html 和body樣式的相關(guān)資料展開詳細內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • JS前端性能優(yōu)化解決內(nèi)存泄漏頁面崩潰

    JS前端性能優(yōu)化解決內(nèi)存泄漏頁面崩潰

    這篇文章主要為大家介紹了JS前端性能優(yōu)化解決內(nèi)存泄漏頁面崩潰示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 8個工程必備的JavaScript代碼片段

    8個工程必備的JavaScript代碼片段

    這篇文章小編主要給大家介紹是8個工程中必須必備的JavaScript代碼片段,需要的小伙伴可以參考下面文章的具體內(nèi)容,對你有用的話建議收藏哦
    2021-09-09
  • electron渲染進程主進程相互傳值示例解析

    electron渲染進程主進程相互傳值示例解析

    這篇文章主要為大家介紹了electron渲染進程主進程相互傳值示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

建始县| 子长县| 图木舒克市| 武宣县| 宁化县| 南川市| 肃北| 大渡口区| 荥阳市| 伊宁市| 洛宁县| 堆龙德庆县| 资中县| 博客| 伊春市| 汨罗市| 开封县| 禹州市| 南康市| 龙南县| 绥化市| 二手房| 宝鸡市| 九龙县| 宜黄县| 德化县| 玉田县| 桂平市| 松溪县| 林周县| 随州市| 邯郸市| 建水县| 美姑县| 拉萨市| 福建省| 砀山县| 博客| 即墨市| 双桥区| 乌拉特后旗|