飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • JAVASCRIPT

    • JavaScript
    • 语句和表达式
    • 数组空位
    • 无法访问 undefined、null 的属性
    • currying
      • 一道题目
      • 发散
        • 1. 最简化
        • 2. 追加更多
        • 3. 更好的终结形式
        • 4. 更多的参数
    • 装饰器 Decorator
    • ES6 的简单使用
    • Error 类型
    • 事件队列
    • 隐式转换
    • 调用表达式
    • 函数调用
    • 运算符优先级
    • 原型链
    • 正则 exec
    • 作用域与闭包
    • 一步步启用 babel7
    • 什么是 this
    • typeof
    • 全局属性 undefined
    • 自增/减

currying

复杂的看 lodash

一道题目

sum(1)(2,3).sumOf() // 6

发散

1. 最简化

// sum(1)(2) => 3
const sum = (x) => (y) => x + y

2. 追加更多

// sum(1)(2)(3)(4) => 10
// 但总要有一个区分终结的标志
// sum(1)(2)(3)(4)() => 10

const sum = (x) => {
  let result = x

  return function add (y) {
    if (y) {
      result += y
      return add
    } else {
      return result
    }
  }
}

3. 更好的终结形式

// sum(1)(2).sumOf() => 3
// sum(1)(2)(3)(4).sumOf() => 3

const sum = (x) => {
  let result = x

  function add (y) {
    result += y
    return add
  }

  add.sumOf = () => result

  return add
}

4. 更多的参数

// sum(1)(2,3).sumOf() => 6
// sum(1,2)(3)(4,5,6).sumOf() => 21

const sum = (...args) => {
  let result = [...args]

  function add (...orgs) {
    result.push(...orgs)
    return add
  }

  // 取个巧,最后计算
  add.sumOf = () => result.reduce((acc, cur) => acc + cur)

  return add
}
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
无法访问 undefined、null 的属性
Next
装饰器 Decorator