vue中的computed()算不算高阶函数?

新手上路,请多包涵

vue中的computed()算不算高阶函数?

阅读 923
4 个回答

不算
高阶函数(Higher-order Function)是指可以接受一个或多个函数作为参数,并且可以返回一个函数作为结果的函数。
image.png

维基百科上对于高阶函数的定义

In mathematics and computer science, a higher-order function (HOF) is a function that does at least one of the following:

  • takes one or more functions as arguments (i.e. a procedural parameter, which is a parameter of a procedure that is itself a procedure),
  • returns a function as its result.

至少满足上面的其中一个条件就可以了。computed函数可以接受一个函数作为参数,故它是高阶函数。

我一直不太喜欢 “高阶组件” 和 “高阶函数” 这样的专业名词。因为让人觉得很困惑,让人以为“高阶XX”是一个很厉害的函数/组件。但其实就是在原有的函数/组件上面去做一层包装处理,然后返回包装结果。

所以你觉得 computed 算不算是一个对原有基础上做包装处理的函数呢,以使用和实现角度来说是的。 👉 core/packages/reactivity/src/computed.ts at v3.4.27 · vuejs/core · vuejs/core

在组合式API里面会比较好分辨:

import { ref, computed } from 'vue'
const count = ref(1)
const plusOne = computed(() => count.value + 1)

在选项式API里面会没有那么明显。

在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:

  • 接受一个或多个函数作为输入
  • 输出一个函数

computed是高阶函数
同样的,Array原型上的常用方法map, filter, forEach这些都属于高阶函数

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题