你能用 JavaScript 编写嵌套函数吗?

IT技术 javascript function nested
2021-03-02 23:34:50

我想知道 JavaScript 是否支持在另一个函数或嵌套函数中编写函数(我在博客中读到它)。这真的可能吗?。事实上,我已经使用过这些,但我不确定这个概念。我对此真的不清楚-请帮忙!

6个回答

这真的可能吗。

是的。

function a(x) {    // <-- function
  function b(y) { // <-- inner function
    return x + y; // <-- use variables from outer scope
  }
  return b;       // <-- you can even return a function.
}
console.log(a(3)(4));

function a(x) { // <-- function return{ calc: function (y) { // <-- 内部函数 return x*y;// <--return x 使用外部作用域的变量 } }; 控制台日志(a(3)(4));
2021-04-29 23:34:50
这种方法称为柯里化。
2021-05-03 23:34:50

以下内容令人讨厌,但用于演示如何像对待任何其他类型的对象一样对待函数。

var foo = function () { alert('default function'); }

function pickAFunction(a_or_b) {
    var funcs = {
        a: function () {
            alert('a');
        },
        b: function () {
            alert('b');
        }
    };
    foo = funcs[a_or_b];
}

foo();
pickAFunction('a');
foo();
pickAFunction('b');
foo();
像对待对象一样对待这些函数
2021-04-21 23:34:50
很好的例子。我要补充一点,重要的是要注意在其他函数中定义的函数仅存在于该函数范围内(当然,除非按照本示例为它分配一个全局函数)。
2021-05-09 23:34:50

函数是第一类对象,可以是:

  • 在您的函数中定义
  • 就像在函数中的任何点创建的任何其他变量或对象一样
  • 从您的函数返回(在上述两个之后似乎很明显,但仍然如此)

以 Kenny 给出的示例为基础:

   function a(x) {
      var w = function b(y) {
        return x + y;
      }
      return w;
   };

   var returnedFunction = a(3);
   alert(returnedFunction(2));

会用 5 来提醒你。

这种方法称为柯里化。
2021-04-18 23:34:50

是的,可以编写和调用嵌套在另一个函数中的函数。

试试这个:

function A(){
   B(); //call should be B();
   function B(){

   }
}

您不仅可以返回作为变量传递给另一个函数的函数,还可以将其用于内部计算但在外部定义。看这个例子:

    function calculate(a,b,fn) {
      var c = a * 3 + b + fn(a,b);
      return  c;
    }

    function sum(a,b) {
      return a+b;
    }

    function product(a,b) {
      return a*b;
    }

    document.write(calculate (10,20,sum)); //80
    document.write(calculate (10,20,product)); //250