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

时间:2016-01-03 12:34:56

标签: javascript equality typeof

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

在控制台中运行上面的代码时,final语句为false。然而,所有3个函数的typeof返回函数。我知道javascript中有一些奇怪的部分有类型..你们可以解释一下这个......

1 个答案:

答案 0 :(得分:3)

问题与不相等的类型无关,但事实是:

a === b === c

被解释为:

(a === b) === c

因此,这意味着第一个测试typeof a === typeof b已解析为true,现在您执行等同于true === typeof window.c的检查。

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

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