Javascript - 如何检测调用了多少函数? (多个括号)

标签 javascript function

让我提出一个有效的例子,然后跟进失败的地方,突出我的问题的要点。

在这里,我们调用了 3 个函数(1 个命名,2 个匿名):

var add = function(a, b) {return a+b};
var multiply = function(a, b) {return a*b};

function myFunction(fxn) {
    return function(x) {
        return function(y) {
            return fxn(x,y);
        }
    }
}

myFunction(add)(2)(3)

可以理解,这个调用失败了:

myFunction(add)(2)(3)(4)

我如何检测调用了多少函数?在第二次调用中,我调用了 4 个函数(1 个命名函数,3 个匿名函数)。

我如何重写 myFunction 函数以补偿任何给定调用量?我知道我们可以检测到一个函数被赋予了多少个参数,但是有没有办法检测到有多少个函数被调用了?我希望我措辞正确。谢谢。

最佳答案

要查明变量是否包含对函数的引用,您可以使用以下代码:

if (typeof(v) === "function") alert("This is a function")

根据上面你可以知道有多少嵌套函数

function myFunction() {
  return function() {
    return function() {
      return 1 + 2;
    }
  }
}

var count = 0;
var v = myFunction();

while (typeof(v) === "function") {
  count++;
  v = v();
}
alert("Nr of nested functions: " + count)

关于Javascript - 如何检测调用了多少函数? (多个括号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30855357/

相关文章:

JavaScript数组问题

javascript - 禁用 jquery 数据表中的按钮

matlab - 在 Matlab 中将函数作为参数传递

php - 无法覆盖 PHP 类/函数

javascript - AngularJS 指令 : template with scope value (ng-bind-html)

javascript - 为什么在编写 Protractor 测试时必须使用 browser.sleep

javascript - 缩小 Angular 应用程序后, Angular js ui-route 不起作用

javascript - 如何在表单提交上调用两个函数

Python从函数返回列表

java - 如何在Android Studio中管理文件