zoukankan      html  css  js  c++  java
  • JavaScript Functional Programming:声明式与命令式

    函数式编程属于声明式编程(declarative programming)的范畴,经常跟声明式编程一块儿讨论的是命令式编程(imperative programming),因为它们是两种不太一样的风格。

    命令式编程一般就是说清楚具体要怎么样得到一个结果:先这样做,再这样做,然后再这样,如果这样,就这样做 … 声明式编程就是声明(说明)一下你想得到的结果是什么样的:把这组电影里的平均分大于 9 分的电影过滤出来给我。

    比如有一组电影,你想过滤出评分 9 分以上的电影。
    let movies = [
      { title: 'The Shawshank Redemption', rating: 9.6 },
      { title: 'Forrest Gump', rating: 9.4 },
      { title: 'Roman Holiday', rating: 8.9 }
    ]
    命令式:
    const imperativeMovieFilter = (movies) => {
      let result = []
      for (let i = 0; i < movies.length; i++) { 
        if (movies[i].rating >= 9) {
          result.push(movies[i])
        }
      }
      return result
    }

    在函数里面,先来个 result,让它等于一个空白的数组。然后我们又 for 循环,去处理 movies ,循环的时候判断当前项目里的评分(rating)是不是大于等于 9,如果是的话,就把这个项目放到 result 里面。循环完成以后,会返回处理之后的结果。命令式编程里,详细的说明了得到结果需要做的每个操作。

    声明式:
    const declarativeMovieFilter = (movies) => {
      return movies.filter((movie) => movie.rating >= 9)
    }
    在上面这个函数里,我们只是说明了一下,自己想要的结果是什么样的,就是评分在 9 分以上的电影。

    ————————————————
    版权声明:本文为CSDN博主「longzhoufeng」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/longzhoufeng/article/details/78802836

  • 相关阅读:
    523 vue组件化高级 插槽slot:slot基本使用,具名插槽,编译作用域,作用域插槽
    522 vue父子组件的访问方式: $children、$refs、$parent
    521 vue子组件向父组件传递数据
    520 vue父组件向子组件传递:props基本用法,props数据验证,props中的驼峰标识
    在 React 组件中使用 Refs 指南
    Flutter 代码开发规范
    Angular ZoneJS 原理
    vue中$refs, $emit, $on, $once, $off的使用
    详解Js加法运算符
    JavaScript 异常
  • 原文地址:https://www.cnblogs.com/xiaomili/p/11376679.html
Copyright © 2011-2022 走看看