Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的替代定义方法_Javascript_Syntax - Fatal编程技术网

javascript中的替代定义方法

javascript中的替代定义方法,javascript,syntax,Javascript,Syntax,什么时候应该使用这种语法在JavaScript中定义函数 myfunc = myfunc || function(n){ return this.length; }; 而不是 myfunc = function(n){ return this.length; }; 基本上,当您不想覆盖函数的先前声明时 例如,假设您有一个函数a,它执行一组操作,并在另一个库中声明。也许您只需要使用它的一小部分,所以您可以使用前面的语法来重新声明函数 这不是一种一致

什么时候应该使用这种语法在JavaScript中定义函数

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

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

基本上,当您不想覆盖函数的先前声明时

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


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

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


因此,当您不确定myfunc是否已定义时,您将检查它是否未定义定义定义函数。

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

更一般地说,整个重新定义方法应该局限于框架作者,即使这样,我也会对任何重新定义表示怀疑,因为这将表明某个人,某个地方,已经允许了名称空间污染或草率的依赖关系管理

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