这两个函数有名称还是术语?我确定他们会这么做,但是不知道要搜索什么。
// edit: thanks to Bergi:
// this is a function with `no free variables` (outer variables)
function add (a, b) { return a + b }
和
// edit: thanks to Bergi:
// this is a function with `free variables` (b) if you didn't know that
var b = 2
function add (a) { return a + b }
如果函数超出其自身范围,它是否被称为特殊内容?什么叫不使用超出自身范围的函数呢?
我想向某人解释的是,如果我在哪里写这个导出了两个辅助函数的实用程序文件
// util
function divide (a, b) {
return a / b
}
function half (a) {
return divide(a, 2)
}
export {
divide,
half
}
然后在另一个文件中,我仅使用除法功能
import { divide } from util
然后,WebPack /汇总将能够摇晃树并丢弃最终捆绑包中的half
功能
但是如果从实用程序文件中导入half
函数
import { half } from util
但是实际上并不需要我的主脚本中的divide
函数,因为half
依赖于divide
如果我将函数更改为不使用超出其自身作用域的任何变量,例如:
function half (a) {
return a / 2
}
那么它将是免费的“依赖”。
答案 0 :(得分:1)
如果函数超出了自己的范围,它是否会调用特殊的东西?
我们称它们为closures。它有一个free variable,在JS中会在范围内按词法查找它。
但是,在JavaScript中,technically every function is a closure可能不是您要使用的术语;大多数人将其与动态创建的函数相关联,这对于模块级函数来说很奇怪。
您称什么为不使用超出其自身范围的函数的函数?
适合“ 没有自由变量的函数”。