【问题标题】:Property name same as non anonymous function属性名称与非匿名函数相同
【发布时间】:2015-04-29 12:53:35
【问题描述】:

为了更好的调试目的,我想使用非匿名函数并遇到以下问题。

当我有一个函数返回一个方法对象时(如在 angularjs 工厂中),将返回的属性和函数命名为相同的样式是否不好?

喜欢这里:

angular
    .module('myModule', [])
    .factory('foobar', foobar);

function foobar() {
    return {
        foo: function foo() {console.log('foo')},     //Is this ok
        bar: function barFunc() {console.log('bar')}  //Or this way better
    }
}

【问题讨论】:

  • 如果你不想匿名函数,为什么不在return声明之前声明它们?
  • 这不会改变问题......它仍然是return {foo: foo}。整个问题是关于 JavaScript 风格的好坏。
  • 为什么会是不好的风格?
  • 也许关于调试问题...我不知道,只是问问。看完《Javascript 的精华部分》后,我对任何与风格有关的东西都很好奇

标签: javascript angularjs coding-style


【解决方案1】:

这不是风格问题,也没有明确的答案。将函数表达式命名为与属性相同肯定没有错。

但是,您的目标是获得更好的调试体验。所以你应该问自己:“什么名字最能帮助我通过名字来识别代码中的函数?”。无论是foo、fooFunc、foobar_foo(包括模块名称)还是其他任何名称,您都必须自己决定。

【讨论】:

    【解决方案2】:

    这两个选项都很好 - 您将得到的唯一区别是,在调试时您会看到函数名称而不是 anonymous function,这真的很有用。

    所以总结一下 - 我建议你给它们命名,但命名完全取决于你 :-)

    【讨论】:

      【解决方案3】:

      最好的方法是:

      function foobar() {
        return {
          foo() { console.log('foo') }
        };
      }
      

      【讨论】:

      • 不错的方法,但我确实返回了多个属性。
      猜你喜欢
      • 2011-12-29
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多