目录

函数式编程与命令式编程的区别

目录

函数式编程与命令式编程最大的不同其实在于:

函数式编程关心数据的映射,命令式编程关心解决问题的步骤

例如反转二叉树

命令式编程可以这样写:

1
2
3
4
5
6
7
function invertTree(root) {
  if (!root) {
    return null;
  }
  [root.left, root.right] = [invertTree(root.right), invertTree(root.left)];
  return root;
}

上面的赋值操作体现了解决问题的步骤。

函数式编程可以这样写:

1
2
3
4
5
6
7
// 伪代码
function invertTree(root) {
  if (!root) {
    return null;
  }
  return new Tree(root.value, invertTree(root.right), invertTree(root.left));
}

上面直接返回另外一个对象,无赋值操作,体现了数据直接的映射。

参考链接:

什么是函数式编程思维?

函数式编程初探