检查 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)
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)