代码之家  ›  专栏  ›  技术社区  ›  Endless

使用函数之外的东西和自包含函数的函数叫什么?

  •  0
  • Endless  · 技术社区  · 6 年前

    这两个函数有名字或术语吗?我肯定他们知道,但不知道该找什么。

    // 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 }
    

    如果一个函数超出了它自己的作用域,它是否被称为特殊函数?如果这个函数不使用任何超出其自身范围的东西,你怎么称呼它?


    我想向某人解释的是,如果我在哪里写这个实用程序文件,它导出了两个helper函数

    // util
    function divide (a, b) {
      return a / b
    }
    
    function half (a) {
      return divide(a, 2)
    }
    
    export {
      divide,
      half
    }
    

    在另一个文件中,我只使用除法函数

    import { divide } from util
    

    half

    但如果从哪里进口 实用程序文件中的函数

    import { half } from util
    

    但其实不需要 divide 在我的主脚本中,我最终会在包中同时使用这两个函数,因为 一半 取决于

    如果我将函数更改为不使用任何超出其自身范围的变量,如下所示:

    function half (a) {
      return a / 2
    }
    

    那么它就没有“依赖性”了。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bergi    6 年前

    如果一个函数超出了它自己的作用域,它是否被称为特殊函数?

    我们叫他们 closures . 它有一个 free variable

    然而,尽管 technically every function is a closure 在JavaScript中,这可能不是您想要使用的术语;大多数人将它与动态创建的函数相关联,这对于模块级函数来说是很奇怪的。

    如果函数不使用其自身范围之外的任何内容,您将其称为什么?

    无自由变量函数 “会合适的。