在以下情况下解释 >= 和 <= 运算符的行为
Explain the behaviour of >= and <= operators in the following case
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,那是错误的。
相关文章:
- 这是什么 ==- javascript 运算符
- jQuery/JS包含运算符或类似运算符
- Javascript逻辑运算符和字符串/数字
- 模运算符前的双水平线
- 你能解释一下这个阶乘函数是如何工作的吗?
- jQuery's trim()的前缀为not运算符
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 你能解释一下为什么这个javascript不正确吗
- 如何使用排列运算符来获取具有命名参数的函数的所有参数
- JavaScript 中三元条件和逻辑和运算符的运算符优先级
- 用于验证JS中逻辑运算符表达式的正则表达式
- 什么's是相当于LINQ's SelectMany运算符
- JavaScript-===vs===运算符性能
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 三元运算符检查多个字符串
- 在以下情况下解释 >= 和 <= 运算符的行为
- 解释javascript中的+var和-var一元运算符
- Javascript中三元运算符的解释
- 有人可以解释JavaScript中的逻辑运算符吗?