1.概念:以函数为基础的编程方式和代码组织方式,即任何代码可以都是函数,且要求具有返回值;
// 非函数式
var title = "Functional Programming";
var saying = "This is not";
console.log(saying + title); // => This is not Functional Programming
// 函数式
var say = title => "This is " + title;
var text = say("Functional Programming"); // => This is Functional Programming
2.基本条件 — 函数为一等公民
(1)函数能被赋值给变量;
(2)函数能被当作参数传入;
(3)函数能被当作返回值;
3.纯函数(pure function):只做运算并返回一个值,没有额外的行为;
(1)引用透明(Referential transparency) — 函数内只会依赖 传入参数,即给予相同的参数,永远会返回相同的返回值;
(2)没有副作用(No Side Effect) — 不会涉及到外部变量的使用和修改;
var arr = [1, 2, 3, 4, 5];
// 纯函数:slice()
arr.slice(0, 3); // [1, 2, 3]
arr.slice(0, 3); // [1, 2, 3]
// 非纯函数:splice()
arr.splice(0, 3); // [1, 2, 3]
arr.splice(0, 3); // [4, 5]
网友评论