嘿, 你知道嗎, 不再須要for循環了!

作一個優雅的程序員

JavaScript是一門優雅的語言, 這個'優雅'體驗在JS邏輯層次處於高段位的水平, 什麼意思呢, 就是一個js應用的主線劇情必定所有是函數式表達的高層可讀邏輯, 仍是不懂? 再舉個栗子: node

一個node.js應用程序中index.js文件裏面歷來都不會出現一些封裝的工具好比斐波那契求和函數, 也不會出基礎現常量表達式好比數值, 字符串, 正則表達式, 由於這些都屬於數據而不是代碼!!程序員

若是你的主線文件(好比index.js)中出現了8080, "很差, 數據404了", /^[^ ]{5}$/, 之類的本應該寫在配置文件中的數據, 說明你還不是一個優雅的程序員😝~正則表達式

永遠要記住, 數據與代碼的區別!!!express

EcmaScript是一門優雅的函數式編程語言

什麼是函數式編程???編程

函數式編程是種編程方式,它將電腦運算視爲函數的計算。函數編程語言最重要的基礎是λ演算(lambda calculus),並且λ演算的函數能夠接受函數看成輸入(參數)和輸出(返回值)。 api

和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。數組

和過程化編程相比,函數式編程裏函數的計算可隨時調用。異步

函數式編程的核心是表達式(expression), 衆所周知JavaScript中一切都是表達式, 表達式的排列組合構成了世間萬物. 因此理想狀態下代碼中是不該該存在語句的, 但是目前js仍是有許多常見的語句好比變量聲明語句(var, let, const), 邏輯控制語句(if, for, try&catch), 該怎麼辦呢, 這些語句其實均可以用函數表達式來替代! 下面聽我一一分析(*^__^*) ……編程語言

可是先記住, 將語句所有替換成表達式是有代價的, 好比👇函數式編程

js語句某種意義上增長了語法多樣性的美

可是無所謂, 爲了實現我函數式編程語言的大一統, 語句必須被封殺, 語法多樣性咱們不是有異步機制來帶的各類新奇語法嗎🙄..

if else --> 3元表達式

if判斷語句能夠用3元運算符「條件表達式A?表達式1:表達式2」來簡單替代, 條件表達式A就是if中的bool數據, 同時也能夠替代if的嵌套. if不是重點由於可能不少看官發現了, 複雜狀況下用3元來替代if實在是太醜了, 徹底喪失了可讀性, 我也不推薦這種強扭的替換, 只是爲了證實, if語句並非不可替代的.

循環 --> 數組方法

重點來啦!!

JavaScript中全部的循環語句, 不管是for仍是while, 均可以通通用Array.prototype的map,filter,find,some,every,forEach來替代👍👍(強烈推薦)

循環一般要遍歷一個數組, 利用數組原生提供的這些方法能夠完美的知足各類功能, 不只從語法上取代了傳統循環尷尬的表現力, 更從api的層面上擴展了豐富的方法, 這裏就不一一展開說明了. 利用數組替代循環還須要注意如下的Q&A:

若是要指定循環次數怎麼辦?

手動構造一個數組很是簡單:

若是須要循環count = 10次的任務, 構造一個長度爲count的數組便可:

  Array.from({length: count}).forEach

還有種更暴力的辦法: new Array(count).forEach

須要中斷循環呢?

so easy.

find回調返回true, some回調返回true, every回調返回false: 這3種方法能夠完美的中斷數組的遍歷😝

除此以外continue關鍵字也能夠用return替代!

try&catch語句

解決方案: catch關鍵詞變成catch方法

好比Promise的catch就完美的封裝了異常捕獲機制

 

優雅的函數式編程風是將來的主流

首先, 函數式和麪向對象是並不互斥

函數式是對面向對象的昇華, 取其精華去其糟粕, 繼承並擴展了對象分裝的哲學同時也削減了臃腫的繼承機制.

將來, 面向對象的編程思想依然存在, 但函數式編程風格, 即基於事件的非阻塞引擎, 精簡語義化的主線劇情, 以表達式爲基本元素的代碼塊將成爲編程界新的風景線.

相關文章
相關標籤/搜索