10. 柯里化

1/8/2023 js

# 柯里化

使用柯里化解决上一个案例的硬编码问题

// 纯的(有硬编码,后续可以通过柯里化解决)
function checkAge(age) {
  let mini = 18
  return age >= mini
}
1
2
3
4
5

# 普通的纯函数

function checkAge(min, age) {
  return age >= min
}
console.log(checkAge(18, 20))  // true
console.log(checkAge(18, 24))  // true
console.log(checkAge(22, 24))  // true
1
2
3
4
5
6

# 函数的柯里化

// 使用了高阶函数:返回值是一个函数
// 使用了闭包:内部函数访问了外部函数的作用域
function checkAge(min) {
  return function(age) {
    return age >= min
  }
}
const getAge = checkAge(18)
console.log(getAge(22))

// ES6写法
let checkAge = (min) => (age => age >= min)
const getAge = checkAge(18)
console.log(getAge(22))
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 柯里化概念:(Currying)

    1. 当一个函数有多个参数的时候先传递一部分参数调用它(这部分参数以后永远不变)
    1. 然后返回一个新的函数接受剩余的参数,返回结果
    1. (当函数有多个参数时可以进行改造。调用一个函数只传递部分的参数,并且返回一个新的函数,新的函数接受剩余的参数,并且返回相应的结果。这就是柯里化。)
最近更新时间: 2/4/2023, 10:01:08 AM
강남역 4번 출구
Plastic / Fallin` Dild