【读书笔记】JS函数式编程指南

 


第一章

海鸥群可以合并和繁育
conjoin breed

var result = flock_a.conjoin(flock_c).breed(flock_b).conjoin(flo
ck_a.breed(flock_b)).seagulls;

但是由于有内部状态,内部状态在代码执行时很难追踪,并且内部状态还有可能发生预期之外的改变
使用函数式则可以避免内部状态

var result = conjoin(breed(flock_b, conjoin(flock_a, flock_c)),
breed(flock_a, flock_b));

又因为conjoin本质是加法,breed本质是乘法,所以替换其真名

var result = add(multiply(flock_b, add(flock_a, flock_c)), multi
ply(flock_a, flock_b));

在可以的地方应用数学定律

multiply(flock_b, add(flock_a, flock_a));

第二章

一、箭头函数化简技巧

// 太傻了
const getServerStuff = callback => ajaxCall(json => callback(jso
n));
// 这才像样
const getServerStuff = ajaxCall;

化简的原则是

const a = (x)=>f(x)
// 等价于
const a = f

没用的间接层,删掉删掉

const BlogController = {
  index(posts) { return Views.index(posts); },
  ...
};
const BlogController = {
  index:Views.index,
};

间接层会导致修改代码的时候冗余,比如多添加一个参数,整个间接层都需要改,还不如不加间接层

二、正确的函数命名

相同的概念不要使用不同的名称,要让代码更加通用

// 只针对当前的博客
const validArticles = articles =>
articles.filter(article => article !== null && article !== und
efined),
// 对未来的项目更友好
const compact = xs => xs.filter(x => x !== null && x !== undefin
ed);

注意 this 不要弄错,

第三章

posted @   dou_fu_gan  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示

目录导航