检查 Javascript 中不同类型函数的相等性

Checking the equality of different kind of functions in Javascript

function a(){ return true; }
var b = function(){ return true; };
window.c = function(){ return true; };


console.log(typeof a);//returns funtion
console.log(typeof b);  //returns funtion
console.log(typeof window.c);   //returns funtion

typeof a === typeof b === typeof window.c  //returns false

在 运行 上面的控制台代码中,最后的语句给出了 false。而 typeof 所有 3 个函数 returns 函数。我知道 javascript 中有一些奇怪的部分与 typeof ..你们能解释一下吗..

问题与类型不相等无关,而是因为:

a === b === c

解释为:

(a === b) === c

所以这意味着第一个测试 typeof a === typeof b 被解析为 true,现在您执行 true === typeof window.c.

等相等性检查

您可以通过将条件重写为:

来解决问题
(typeof a === typeof b) && (typeof b === typeof window.c)