function foo(){
console.log( function(){return 1} <= function(){return 1} );
}
foo();
上面的代码打印“true”。对于 <= 和 >= 都输出 true,对于所有其他运算符,它输出“false”。
这里发生了什么诡计?
最佳答案
因为它不是比较返回的1
,而是比较函数
。当您对函数运行运算符时,它会隐式调用 toString
。
至于 ==
,Dmitri 解释得很好,toString
没有被调用,但它运行对象比较,这将是 false,因为有 2 个不同的对象永远不会一样。
这是ECMA spec关于关系运算符,解释了它如何与比较运算一起操作。对于对象,使用 instanceOf
。
关于javascript - 解释 >= 和 <= 运算符在以下情况下的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144481/