JavaScript?管道運(yùn)算符及工作原理
JavaScript 管道運(yùn)算符
管道運(yùn)算符是 Javascript 即將推出的功能,它為我們提供了另一種通過(guò)一系列轉(zhuǎn)換傳遞值的方法。 它為開(kāi)發(fā)人員在編寫(xiě)代碼時(shí)試圖實(shí)現(xiàn)的目標(biāo)提供了更多上下文,并允許我們做一些很酷的事情。 在這里,我們將快速了解管道運(yùn)算符工作方式以及我們現(xiàn)在如何使用它們。
Javascript 管道運(yùn)算符的支持
目前,沒(méi)有瀏覽器或服務(wù)器端 ECMAScript 實(shí)現(xiàn)(如 Node.JS)支持管道運(yùn)算符。 但是,我們可以使用 Babel 7.15 讓它們工作。 可以說(shuō)這將允許我們將管道運(yùn)算符添加到我們的代碼中。
Javascript 管道運(yùn)算符的工作原理
管道運(yùn)算符只是在 Javascript 中操作值的另一種方式。 管道運(yùn)算符是 |>
。 假設(shè)我們有 3 個(gè)將數(shù)字添加到輸入值的數(shù)學(xué)函數(shù):
// 加 1 let addOne = function(x) { return x + 1; } // 乘 2 let multiplyByTwo = function(x) { return x * 2; } // 除 6 let divideBySix = function(x) { return x / 6; }
如果我們想將所有這些函數(shù)應(yīng)用于我們擁有的數(shù)字,我們現(xiàn)在可能會(huì)這樣做:
let number = 6; let calculate = addOne(multiplyByTwo(divideBySix(number))); console.log(calculate); // 返回 3.
雖然這可行,但當(dāng)使用多個(gè)函數(shù)時(shí),這可能會(huì)變得非常混亂 – 并且通常會(huì)占用很多行。 因此,我們可以使用這樣的管道運(yùn)算符簡(jiǎn)化上述操作:
let number = 6; let calculate = number |> divideBySix(%) |> multiplyByTwo(%) |> addOne(%); console.log(calculate); // 返回 3.
如我們所見(jiàn),這簡(jiǎn)化了數(shù)字和值的處理,以便我們可以清楚地看到正在發(fā)生的事情。 讓我們分解一下我們所做的:
- 首先,我們使用數(shù)字,并使用管道運(yùn)算符將其傳遞給 divideBySix() 。 我們使用
%
來(lái)表示管道運(yùn)算符之前的值,在這種情況下,6 在我們的數(shù)字變量中。 - 然后我們將數(shù)字從 divideBySix() 傳遞給 multiplyByTwo() 。 同樣,我們使用
%
來(lái)表示前一個(gè)操作的結(jié)果,即 divideBySix() 函數(shù)的值。 - 最后,我們?cè)俅螆?zhí)行此操作并將 addOne() 添加到我們的值中。 結(jié)果是一樣的,所以最后還是得到了3。
使用管道運(yùn)算符簡(jiǎn)化對(duì)象映射
顯然上面的例子是一個(gè)非常簡(jiǎn)單的應(yīng)用程序,但是我們也可以使用管道操作符來(lái)做一些更酷的事情,比如以更連貫的方式映射數(shù)組。 例如,下面是一個(gè) URL 查詢對(duì)象,并將它們合并為一個(gè)文本字符串,該字符串可以添加到 URL 的末尾:
let URLParams = { 'x' : '10245', 'linkId': 'eojff-efekv-ef0kw', 'author' : 'john-smith', 'featured' : false } let getURLQuery = Object.keys(URLParams).map((key) => `${key}=${URLParams[key]}`) |> %.join('&') |> `?${%}`; // 返回 ?x=10245&linkId=eojff-efekv-ef0kw&author=john-smith&featured=false console.log(getURLQuery);
關(guān)于 Javascript 管道運(yùn)算符的結(jié)論
由于管道操作符沒(méi)有得到廣泛的支持,我們只能在安裝了 Babel 的情況下使用這個(gè)特性。 話雖如此,管道運(yùn)算符為我們的代碼添加了大量上下文,并簡(jiǎn)化了操作,以便以后可以擴(kuò)展它們。 因此,可能值得嘗試將 Babel 放入我們的代碼庫(kù)中。
到此這篇關(guān)于JavaScript 管道運(yùn)算符的文章就介紹到這了,更多相關(guān)js管道運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
原生JavaScript編寫(xiě)canvas版的連連看游戲
這篇文章主要為大家詳細(xì)介紹了原生JavaScript編寫(xiě)連連看游戲的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05純JS實(shí)現(xiàn)出生日期[年月日]下拉菜單效果
這篇文章主要介紹了基于純JS實(shí)現(xiàn)出生日期[年月日]下拉菜單效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-06-06用DIV完美模擬createPopup 彈出窗口(腳本之家修正版),支持Firefox,ie,chrome
最近要重構(gòu)公司的一個(gè)站,有一個(gè)拾色器只支持IE,不支持FIREFOX CHROME等瀏覽器,花了點(diǎn)時(shí)間對(duì)照原來(lái)的重寫(xiě)了個(gè)。完美實(shí)現(xiàn)createPopup方法的彈窗效果,歡迎大家拍磚!2009-09-09javascript 實(shí)現(xiàn)頁(yè)面加載進(jìn)度條代碼
javascript 實(shí)現(xiàn)頁(yè)面加載進(jìn)度條代碼,需要的朋友可以參考下。2010-04-04layui導(dǎo)航欄二級(jí)菜單不顯示問(wèn)題及解決
這篇文章主要介紹了layui導(dǎo)航欄二級(jí)菜單不顯示問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05javascript中JSON.parse()與eval()解析json的區(qū)別
這篇文章主要介紹了javascript中JSON.parse()與eval()解析json的區(qū)別,詳細(xì)描述了json格式數(shù)據(jù)的操作技巧,并結(jié)合實(shí)例形式對(duì)比分析了使用JSON.parse()與eval()解析json的區(qū)別,需要的朋友可以參考下2016-05-05js對(duì)象數(shù)組查找某一元素的各種方法(不改變?cè)瓟?shù)組)
前端經(jīng)常要通過(guò)javaScript來(lái)處理數(shù)組中的數(shù)據(jù),其中就包括檢查數(shù)組中是否包含滿足特定搜索條件的單個(gè)或者多個(gè)值,這篇文章主要給大家介紹了關(guān)于js對(duì)象數(shù)組查找某一元素的各種方法,文中介紹的方法不改變?cè)瓟?shù)組,需要的朋友可以參考下2024-06-06JS實(shí)現(xiàn)動(dòng)態(tài)生成html table表格的方法分析
這篇文章主要介紹了JS實(shí)現(xiàn)動(dòng)態(tài)生成html table表格的方法,結(jié)合實(shí)例形式分析了javascript針對(duì)數(shù)組數(shù)據(jù)的讀取、遍歷以及動(dòng)態(tài)生成相關(guān)操作技巧,需要的朋友可以參考下2018-07-07JavaScript+TypeScript實(shí)現(xiàn)并發(fā)隊(duì)列的示例
本文主要介紹了JavaScript+TypeScript實(shí)現(xiàn)并發(fā)隊(duì)列的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08