今天去面试,面试官问我是否了解函数式编程,怎么说早上还瞄到这个名词,不过没注意看,现在先简单总结一下:
工业上的编程方式一般都是命令式编程,它解决的问题就是做什么的问题,比如人脑善于分析问题,即是执行的过程,给电脑下命令去执行;现在的c语言和java就是命令式编程;
函数式编程,对应的是声明式编程,本质是lambda算法; 如果是计算机的思考方式就是var一个新的数组,然后便利原数组并计算赋值。人类的思考方式则是够见一个函数fun,返回新的数组,能够被重复使用的;
react把过去不断重复构建UI的过程抽象了组件,且给定参数情况下渲染对应的UI界面。react能够充分利用很多函数式方法减少冗余代码,本身简单容易测试。函数式编程是react的精髓。
命令式编程在意的是解题步骤,
function invertTree(root){
if(root === null){
return root;
}
if(root.left){
invertTree(root.left)
}
if(root.right){
invertTree(root.right)
}
var tmp = root.left;
root.left = root.right;
root.right = tmp;
return root;
}
原文:https://blog.csdn.net/u014328357/article/details/70598420
编程式函数在意的是:数据如何映射,
function Tree(val,left,right){
this.val = val;
this.left = left;
this.right = right;
}
function invert(node){
if(node === null){
return node
}else{
return new Tree(node.value, invert(node.right), invert(node.left))
}
}
函数式编程就是借鉴了数学中的函数:给出一个值,根据这个值,返回一个恰当的值。而这个给出的值,也很可能是一个函数;
当给出的值是函数时,就是我们所说的高阶组件;