javascript中的备用定义方法

时间:2014-08-04 14:16:14

标签: javascript syntax

我应该何时使用此类语法在JavaScript中定义函数

myfunc = myfunc ||
  function(n){
      return this.length;
  };

而不是

  myfunc = 
  function(n){
      return this.length;
  };

3 个答案:

答案 0 :(得分:0)

基本上,当你不想覆盖以前的函数声明时。

例如,假设您有一个函数A(),它执行一组操作并在另一个库中声明。也许您只需要使用它的一小部分,因此您可以使用以前的语法重新声明该函数。

这不是一种一致的编程方式,它会使代码难以调试,但它是可行的。

答案 1 :(得分:0)

在上述情况下,如果未定义myfunc,则会检查此情况,然后将其定义为函数。

因此,当您不确定myfunc是否已定义时,您将检查undefined是否定义了一个函数。

答案 2 :(得分:0)

正如其他海报所指出的那样,当你想要定义一个之前或之前未定义过的函数时,可以使用第一个表达式。但这并不是一个好方法,因为构造不会告诉你测试对象是否是一个函数,如果是,它是否是你期望的那个(它可能是折叠库的结果。)

更一般地说,整个重新定义的方法应该仅限于框架作者,即使这样,我也会对任何重新定义持怀疑态度,因为这表明有人在某处允许命名空间污染或草率依赖管理。

我自己在我过去的一些脚本中重新定义了现有函数,但这些事件都是关于受控环境中的优化,当初始函数确定当前用户代理的执行分支时,并重新定义自身以便进一步调用避免任何冗余的初始化代码。