嘿, 你知道吗, 不再须要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就完美的封装了异常捕获机制

 

优雅的函数式编程风是将来的主流

首先, 函数式和面向对象是并不互斥

函数式是对面向对象的升华, 取其精华去其糟粕, 继承并扩展了对象分装的哲学同时也削减了臃肿的继承机制.

将来, 面向对象的编程思想依然存在, 但函数式编程风格, 即基于事件的非阻塞引擎, 精简语义化的主线剧情, 以表达式为基本元素的代码块将成为编程界新的风景线.

相关文章
相关标签/搜索