Javascript:在对象中分配变量时命名函数的好处是什么?

时间:2015-01-27 21:13:44

标签: javascript

我注意到公司里的人喜欢在将函数分配给变量时命名函数。如果没有命名它们,它的工作原理完全相同有什么好处?

function TargetingForm() {
  'use strict';

  this.setPristine = function setPristine() {
    ...
  }

  //vs

  this.setPristine = function() {
    ...
  }
}

2 个答案:

答案 0 :(得分:4)

为了确保在调试时函数的名称出现在堆栈跟踪中(而不是显示为"匿名函数")。

但是,许多现代javascript引擎可以为堆栈跟踪派生一个有用的名称,即使在赋值表达式中匿名声明该函数,例如在第二个示例中。

答案 1 :(得分:3)

我能想到的一件事(如果我是对的!)是你可能需要从它自己调用函数(递归)。

例如,你可以这样做:

function TargetingForm() {
  'use strict';

  this.setPristine = function setPristine() {
    // You can do this
    if (someConditionIsTrue) {
        setPristine();
    }
  }

  //vs

  this.setPristine = function() {
    // You can't do the same here!
  }
}