如何在javascript中比较两个静态函数是否相等

Sap*_*ddy 7 javascript

如何比较javascript中的两个静态函数是否相等?

jsp*_*cal 6

String(f1) === String(f2)
Run Code Online (Sandbox Code Playgroud)

  • 编写它的另一种方法,就是那里的字节存储器:`""+ f1 ===""+ f2` (3认同)
  • 我认为你的意思是`String(f1)=== String(f2)`除非你有一个我不知道的自定义`string()`方法:) (2认同)

Dan*_*eam 6

var f1 = f2 = function( a ){ return a; };
Run Code Online (Sandbox Code Playgroud)

在这里,您可以使用,f1 === f2因为它们指向相同的内存,并且它们是相同的类型

var f1 = function( a ){ return a; },
    f2 = function( a ){ return a; };
Run Code Online (Sandbox Code Playgroud)

在这里你可以使用Andy E使用的字节保护器(它隐式地将函数转换为它的主体文本为String),

''+f1 == ''+f2.

这是场景背后发生的事情的要点:

f1.toString( ) == f2.toString( )  
Run Code Online (Sandbox Code Playgroud)

编辑:回顾这篇文章一年后,我同意@kangax - 你应该永远不会这样做.

  • 注意`var f1 = f2 = function(){...}`导致`f2`成为全局属性,因为未声明的函数分配给`f2`.未申报的作业通常是有害的,因此最好避免这种模式.此外,不要依赖于`Function.prototype.toString` - 它不是标准化的,因浏览器而异. (7认同)