我应该何时使用此类语法在JavaScript中定义函数
myfunc = myfunc ||
function(n){
return this.length;
};
而不是
myfunc =
function(n){
return this.length;
};
答案 0 :(得分:0)
基本上,当你不想覆盖以前的函数声明时。
例如,假设您有一个函数A(),它执行一组操作并在另一个库中声明。也许您只需要使用它的一小部分,因此您可以使用以前的语法重新声明该函数。
这不是一种一致的编程方式,它会使代码难以调试,但它是可行的。
答案 1 :(得分:0)
在上述情况下,如果未定义myfunc
,则会检查此情况,然后将其定义为函数。
因此,当您不确定myfunc
是否已定义时,您将检查undefined
是否定义了一个函数。
答案 2 :(得分:0)
正如其他海报所指出的那样,当你想要定义一个之前或之前未定义过的函数时,可以使用第一个表达式。但这并不是一个好方法,因为构造不会告诉你测试对象是否是一个函数,如果是,它是否是你期望的那个(它可能是折叠库的结果。)
更一般地说,整个重新定义的方法应该仅限于框架作者,即使这样,我也会对任何重新定义持怀疑态度,因为这表明有人在某处允许命名空间污染或草率依赖管理。
我自己在我过去的一些脚本中重新定义了现有函数,但这些事件都是关于受控环境中的优化,当初始函数确定当前用户代理的执行分支时,并重新定义自身以便进一步调用避免任何冗余的初始化代码。