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中有一些奇怪的部分有类型..你们可以解释一下这个......
答案 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)