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