【问题标题】:Is it possible to write continuous nested functions in JavaScript?是否可以在 JavaScript 中编写连续的嵌套函数?
【发布时间】:2018-02-20 15:47:25
【问题描述】:

我知道这是闭包的领域,什么不是。但是是否可以连续调用嵌套的匿名函数?

说我有这个:

function testing(input) {

  var testing = 0;
  (function() {
    testing = testing + 1;
  })()

  return "testing";
}

我们可以有这样的东西testing()()()()()()() 吗?

【问题讨论】:

  • var testing = function() { return testing; };
  • 很有可能但不推荐
  • ^^ 在这种情况下,命名函数效果更好,因为即使在函数中分配给另一个名称,它也会保留引用。
  • 大家想要的结果是什么? 'testing' 还是个数?
  • @NinaScholz 应该是一个字符串。但是对测试的调用可以是任意的。这就是为什么它如此难以理解的原因。因此,对于每次调用,我们都会在某事上附加一个字符串

标签: javascript function closures anonymous-function nested-function


【解决方案1】:

您可以使用一个内部函数进行更新,并具有一个 toString 方法来获取原始值。

function testing() {
    function fn() {
        string += ++counter;
        return fn;
    }

    var counter = 0, 
        string = 'foo';

    fn.toString = _ => string;
    return fn();
}

console.log(testing());
console.log(testing()());
console.log(testing()()());

【讨论】:

  • 了不起的工作尼娜,这正是我要找的。我不敢相信我们可以在 js 中拥有这样的东西。
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
相关资源
最近更新 更多