命令功能与javascript之间有什么区别?

时间:2014-01-12 04:40:57

标签: javascript syntax

之间有什么区别
settings = {
  edit: function (key, value) {
    return anotherFunction(key, value) {
      return value * 2;
    };
  }
};

settings = {
  edit: function edit(key, value) {
    return anotherFunction(key, value) {
      return value * 2;
    };
  }
};

3 个答案:

答案 0 :(得分:3)

执行时没有区别。

但是,在第二种情况下(命名函数),你可以更容易地调用函数,因为它有一个名字。

例如,使用命名函数,您可以执行以下操作:

fact: function factorial(n) {
     if(n == 0) return 1;
     return n * factorial(n-1);   //You can do this with a named function easily
  }

没有名字,这将是棘手的。

干杯

答案 1 :(得分:1)

本质区别在于更好的调试。在您的开发人员工具中,第二个示例中的命名函数将在回溯中显示为edit;您的第一个示例将显示为anonymous。如果您的功能很深,那么这可能会非常混乱,并且它们全部称为anonymous

答案 2 :(得分:0)

给函数一个固有名称有三个理由。首先是每个人都这样做。这是每个人都习惯的。

function factorial(n) {
    var accum = 1, i;
    for (i = 1; i <= n; i++) {
        accum *= i;
    }
    return accum;
}

第二个是更好地理解堆栈跟踪,正如@meagar所写。

第三是让你递归地编写调用函数。

var factorial = function(n) {
    var a = 1;
    return (function factRecursive(k, a) {
        if (k >= 2) {return factRecursive(k - 1, k * a)}
        else        {return a;}
    })(n, a);
}