在以下情况下解释 >= 和 <= 运算符的行为

Explain the behaviour of >= and <= operators in the following case

本文关键字:运算符 解释 情况下      更新时间:2023-09-26
function foo(){
console.log( function(){return 1} <= function(){return 1} );
}
foo();

上面的代码打印"true"。它为 <= 和>= 打印 true,对于所有其他运算符,它都是"false"。

这是什么把戏?

因为它不是比较返回的1,而是比较functions。在函数上运行运算符时,它会隐式调用 toString

至于==,德米特里解释得很好,toString没有被调用,但它运行一个对象比较,这将是错误的,因为两个不同的对象永远不会相同。

这是 ECMA 规范关于关系运算符,它解释了它如何使用比较操作进行操作。对于对象,使用instanceOf

function(){return 1} <= function(){return 1}

函数转换为原语。转换为基元的函数计算其字符串中的代码(调用toString()(。
然后"function (){return 1}" <= "function (){return 1}"对字符串执行较小或相等的比较,即true

function(){return 1} == function(){return 1} JavaScript比较函数对象。但是由于这些是不同的实例,因此您将拥有false

您可以在本文中查看有关相等运算符的更多信息。

因为它总是比较 1 <= 1,这是真的。如果你比较 1>= 1 总是相同的,它是真的。但是如果你比较 1> 1,那是错误的。