函数式编程-函数组合

函数组合的定义

当我们需要依次通过多个函数进行处理,然后得到最终值,那么把这中间所有的函数组合成一个函数,这就叫函数组合。

例如现在有三个函数f1,f2,f3,现在希望输入一个x依次调用这三个来得到y(注意,我们一般会将函数从右向左进行依次执行),过程大概是这样:y = f1(f2(f3(x))),即首先执行f3,将其返回值给f2,然后f2的返回结果给f1。这样形成一条完成的调用,这三个函数就像是一条条的管道一样,x会在管道里依次穿过,最终变成y。

那么此时我们就需要知道一点,那就是被组合的这些函数,必须是一个柯里化之后的纯函数,因为他们都接收一个参数,这个参数会经过每一个管道经过他们的处理,然后得到最终的结果。

不知道什么是“纯函数”和“柯里化”? 请看:函数式编程-纯函数

函数式编程-柯里化函数

什么是柯里化函数?

把接受多个参数的函数变换成先接受部分参数,并且返回一个接收剩余参数的函数,并由此函数返回最终结果。

如果单单是看这一行定义,可能很难理解什么是柯里化。下面我们来举一个例子,假如我们有一个函数,这个函数用来检测一个人是否超过X岁。

表面看起来是一个很简单的需求,函数伸手就来:


const X = 18; function overAge(age){ return age > X

函数式编程-纯函数

函数式编程的理解

对于函数式编程,用我刚开始的无知来理解就是:”把一些操作封装成函数,然后进行调用”。后来一想不太对,要是只有这么简单,那么怎么还会有这样一个概念产生呢。函数谁都会写,谁都会调用。
事实上,函数式编程本身并没有那么简单,就像“面向对象”一样。它是一种思想,一种编程范式。

纯函数的概念

对于相同的输入,永远会输出相同的内容,并且不会产生任务副作用

把这句定义拆成两点:

  • 1.相同的输入永远有相同的输出
  • 2.不会产生任何的副作用

我们先来看第1点,比如我们有一个sum函数,用来计算两个值的和:

function sum(a, b){
   

[译]CSS Grid属性一览

本文主要内容翻译自 https://css-tricks.com/snippets/css/complete-guide-grid/ 一文的属性那部分,其中间也有我自己的理解和看法。

Grid Container 网格容器相关属性

display

.container{
  display:grid | inline-grid
}

将一个元素变成grid盒子,这个盒子,我们称之为“网格容器”,grid

学习笔记-Proxy

Proxy-代理,在JS里就是对数据进行代理。

用proxy代理json数据

let data = { a: 100 };
let p = new