首页 > 编程语言 >【读书笔记】JS函数式编程指南

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

时间:2023-01-14 08:44:38浏览次数:43  
标签:index 编程 const 读书笔记 breed conjoin JS add flock

第一章

海鸥群可以合并和繁育
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 不要弄错,

第三章

标签:index,编程,const,读书笔记,breed,conjoin,JS,add,flock
From: https://www.cnblogs.com/dou-fu-gan/p/17051237.html

相关文章

  • js-export关键字介绍
    在JavaScript中,export语句中被使用在一个模块中,去export,functions,objects,或者私有的value,所以我们可以在另外一个程序中使用这些,使用import语句。模块将......
  • 记好这24个ES6方法,用于解决实际开发的JS问题
    本文主要介绍24中es6方法,这些方法都挺实用的,本本请记好,时不时翻出来看看。  1.如何隐藏所有指定的元素1consthide=(el)=>Array.from(el).forEach(e=>(e.......
  • json转map
    java中map和json互转工具类,注意方法示例的格式(这里是最简单的无嵌套的格式),不满足此格式的不合适:packagecom.yscredit.sz.util;importcom.alibaba.fastjson.JSON;importor......
  • vue.js客服系统实时聊天项目开发(二)界面代码css display:flex实现垂直方向自适应高度
    我想要实现的效果是,三个元素,第一个是标题,第二个是消息列表是自适应高度的,第三个是输入框<template><divclass="chatAppBody"><divclass="chatTitle">标......
  • vue.js客服系统实时聊天项目开发(一)路由与子路由-全局变量-elementui搭建基本框架
    Vue应用程序设置一些基本配置,包括使用依赖项,设置路由,挂载组件等。这样就可以使用Vue框架开发应用程序了先来看看我的客服系统项目的package.json{"name":"VueLiveCh......
  • 如何在 Nuxt 3 中使用 wavesurfer.js
    安装wavesurfer.js在项目中安装wavesurfer.jsnpminstall--savewavesurfer.js常规方式引入如果你的根目录中没有components目录则需要创建该目录,并在此目录中创......
  • cef注入js文件
    思路很简单,在页面加载完成时,执行以下JS代码即可:varv=document.createElement('script');v.src='http://127.0.0.1:9526/cef.js';document.body......
  • angularJS中-$route路由-$http(ajax)的使用
    后台请求使用的是nodeJS驱动(后面帖代码),很简单的RESTFUL,页面使用的是bottstarp3.0(懒人神器); 第一个例子:在本地架设NODEJS,angular的所有请求都是请求本地的300......
  • Python网络编程之socket之send和recv原理剖析
    一、认识TCPsocket的发送和接收缓冲区当创建一个TCPsocket对象的时候会有一个发送缓冲区和一个接收缓冲区,这个发送和接收缓冲区指的就是内存中的一片空间。二、send原理剖......
  • Angularjs——初识AngularJS
    AngularJS——初识AngularJSAngularJS是什么AngularJS是Google开源的一款前端JS结构化框架,它通过对前端开发进行分层,极好地规范了前端开发的风格——它将前端开发分为Con......