vue源码中,能直接用false的地方,为什么要引入一个总是返回false的函数来得到false?

作者站长头像
站长
· 阅读数 9

Vue-2.0

// src/shared/util.js
/**
 * Always return false.
 */
export const no = () => false
// src/core/config.js
import { no, noop } from 'shared/util'

const config: Config = {
    isReservedTag: no,
    isUnknownElement: no,
    mustUseProp: no,
    ......
}

虽然no函数很简单,执行很快,但终归会比直接写 false 要多花时间吧。

回复
1个回答
avatar
test
2024-07-05

在 Vue 源码中,将一个总是返回false的函数(例如no)用于配置(如isReservedTagisUnknownElement等)的原因是为了提供可扩展性和灵活性。

这样的设计允许在不同的构建版本或环境中动态地替换这些函数。例如,在运行时编译版本的 Vue 中,这些函数可能需要在编译时进行一些特定的检查,因此可以被其他实现替换。而在基本版本中,这些检查可能是不必要的,所以提供一个返回 false 的默认实现是有意义的。

虽然使用一个函数会稍微增加一点运行时的开销,但这种开销非常小,几乎可以忽略不计。在实际应用中,这样的设计带来的可扩展性和灵活性优势远远超过了这点微小的性能损失。实际上,在大多数情况下,性能瓶颈并不在这些函数上,而在于其他高复杂度的计算和操作。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容