《JavaScript函数式编程》读书笔记之第一章 JavaScript 函数式编程简介

JavaScript 函数式编程简介

一、案例

  • 案例一
function splat (fun) {
  return function(array) {
    return fun.apply(null, array)
  }
}
var addEleFun = splat(function (x, y) {
  return x + y
})
addEleFun([1, 2]) // 3

个人理解

通过这样写的一大好处是行为与结果分步进行,更好的解耦、组合

  • 案例二
function unsplat(fun) {
  return function() {
    return fun.call(null. _.toArray(arguments))
  }
}
var joinEle = unsplat(function(array) {
  return array.join(' ')
})
joinEle('1', '$', '&')
// 1 $ &

注:apply 将参数放到数组中调用,call 与方法参数一样

二、开始函数式编程

函数式初始

  • existy 函数,主要用于 nullundefined 值判断,注意使用的是 != 不是 !==
function existy(x) {
  return x != null
}
existy(null) // false
existy(undefined) // false
existy(0) // true
existy(false) // true

关于 null >= 0 的讨论请参考 Franky 大大的 从 null >= 0 说起

  • truthy 函数,用于 值判断,主要为 falsenullundefined三个值, 如果希望数字 0 也为 值,请不要用这个方法
function truthy(x) {
  return x !== false && existy(x)
}
truthy(0) // true
truthy(false) // false
truthy(undefined) // false
truthy(null) // false

加速

  • 静态分析器
  • 谷歌的闭包编译器(Goggle's Closure compiler)

三、总结

  • 确定抽象,并为其构建函数
  • 利用已有的函数来构建更为复杂的抽象
  • 通过将现有的函数传给其他的函数来构建更加复杂的抽象

相关文档

  • microjs.com github
  • microjs.com 一些有趣的javascript库

你可能感兴趣的:(《JavaScript函数式编程》读书笔记之第一章 JavaScript 函数式编程简介)