zoukankan      html  css  js  c++  java
  • 嘿, 你知道吗, 再也不需要for循环了!

    做一个优雅的程序员

    JavaScript是一门优雅的语言, 这个'优雅'体验在JS逻辑层次处于高段位的水平, 什么意思呢, 就是一个js应用的主线剧情一定全部是函数式表达的高层可读逻辑, 还是不懂? 再举个栗子: 

    一个node.js应用程序中index.js文件里面从来都不会出现一些封装的工具比如斐波那契求和函数, 也不会出基础现常量表达式比如数值, 字符串, 正则表达式, 因为这些都属于数据而不是代码!!

    如果你的主线文件(比如index.js)中出现了8080, "不好, 数据404了", /^[^ ]{5}$/, 之类的本应该写在配置文件中的数据, 说明你还不是一个优雅的程序员~

    永远要记住, 数据与代码的区别!!!

    EcmaScript是一门优雅的函数式编程语言

    什么是函数式编程???

    函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。 

    和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。

    和过程化编程相比,函数式编程里函数的计算可随时调用。

    函数式编程的核心是表达式(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就完美的封装了异常捕获机制

     

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

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

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

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

  • 相关阅读:
    SANBA服务和FTP服务
    rpm和yum软件管理
    Linux进程管理
    Linux网络技术管理
    RAID磁盘阵列及CentOS7启动流程
    Linux磁盘管理及Lvm
    Linux计划任务及压缩归档
    Linux权限管理
    Linux用户及用户组管理
    vim 编辑器
  • 原文地址:https://www.cnblogs.com/xosg/p/10257745.html
Copyright © 2011-2022 走看看