小编Ric*_*ick的帖子

为什么在 ECMAscript 中函数 <= 函数为真,但 NaN <= NaN 为假

我试图理解比较函数的奥秘:

let a=function(){}
let b=function(){}
console.log(a==b)  //false
console.log(a===b) //false
console.log(a<b)   //false
console.log(a>b)   //false
console.log(a<=b)  //true !?!
console.log(a>=b)  //true !?!

console.log( (+a) <  (+b) )  //false
console.log( (+a) >  (+b) )  //false
console.log( (+a) <= (+b) )  //false
console.log( (+a) >= (+b) )  //false
Run Code Online (Sandbox Code Playgroud)

在 ECMAscript 中,<= 操作符是这样描述的

RelationalExpression:RelationalExpression<=ShiftExpression

  1. 让 lref 是评估 RelationalExpression 的结果。
  2. 让 lval ? 获取值(lref)。
  3. 让 rref 是评估 ShiftExpression 的结果。
  4. 让 rval ? 获取值(参考)。
  5. 令 r 是执行抽象关系比较 rval < lval 且 LeftFirst 等于 false 的结果。
  6. ReturnIfAbrupt(r)。 …

javascript

4
推荐指数
1
解决办法
56
查看次数

标签 统计

javascript ×1