Javascript - 如何检测正在调用的函数数量? (多个括号)

时间:2015-06-15 21:35:08

标签: javascript function

让我提出一个有效的例子,然后跟进失败的内容,突出我的问题。

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

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

可以理解,调用失败:

myFunction

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

如何以补偿任何给定数量的呼叫的方式重写Private Sub Workbook_Open() ActiveWorkbook.ActiveSheet.Buttons.Delete Dim CommandButton As Button Set CommandButton = ActiveWorkbook.ActiveSheet.Buttons.Add(1200, 100, 200, 75) With CommandButton .OnAction = "Test_Press" .Caption = "Press for Test" .Name = "Test" End With End Sub 函数?我知道我们可以检测到一个函数有多少参数,但有没有办法检测被调用的函数数量?我希望我说得对。感谢。

2 个答案:

答案 0 :(得分:0)

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

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)




答案 1 :(得分:0)

即使这没有实际用例我也能想到,这是一个可能的解决方案:



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

function myFunction(fxn) {
  counter = 1;
  result = 0;
  return function first(x) {
    ++counter;
    return function second(y) {
      ++counter;
      x = result ? result : x;
      result = fxn(x, y);
      return second;
    }
  }
}

myFunction(add)(1)(2)(3)(4);
alert('Result is: ' + result + '; Parentheses count: ' + counter);