Javascript中的函数式编程是什么?它有哪些特点?

函数式编程是一种编程范式,其中程序构造是通过出入函数的方式来实现的。这意味着程序会包含许多纯函数,并通过函数复合与应用来构建功能。

JavaScript 支持函数式编程,主要有以下特点:

  1. 纯函数:输出只依赖于输入,不受外部环境影响,多次调用返回相同结果。
    例如:
function sum(a, b) {
  return a + b;
}
  1. 不变性:函数不应该改变外部状态,应返回新的值。
    例如:
function addTodo(todos, newTodo) {
  return [...todos, newTodo];  
}
  1. 处理副作用:通过函数式组合优雅地处理副作用。
    例如:
function withLogging(f) {
  return function(x) {
    console.log(x);  
    return f(x);
  }
}

const add = (a, b) => a + b;
const addWithLogging = withLogging(add);
addWithLogging(1, 2); // Prints 3, returns 3
  1. 一等公民:函数可以作为参数传递,也可以作为返回值。
    例如:
function higherOrder(f) {
  return f(1); 
}

higherOrder(n => n + 1); // Returns 2
  1. 局部状态:通过闭包实现局部状态。
    例如:
function makeCounter() {
  let count = 0;

  return {
    increment() {
      count++; 
    },
    decrement() {
      count--; 
    },
    get() {
      return count;
    }
  }
}

const counter = makeCounter();
counter.increment(); 
counter.get(); // 1

所以,总结来说 JavaScript 函数式编程主要有以下特点:

  1. 纯函数:输出只依赖输入,多次调用返回相同结果。
  2. 不变性:不改变外部状态,返回新值。
  3. 处理副作用:通过函数组合处理副作用。
  4. 一等公民:函数可以作为参数和返回值。
  5. 局部状态:通过闭包实现局部状态。