Javascript 不同类型的比较(<;和>;)的规则是什么?

Javascript 不同类型的比较(<;和>;)的规则是什么?,javascript,operators,Javascript,Operators,对于

对于
“”//true
10<正确//错误
10
我不知道为什么结果是这样。我找到了,但没有细节

顺便说一句,我对
=
==
的工作方式没有疑问

当我们使用它来比较两个对象时,规则是什么

发件人:

当比较作为对象的变量时,它们被认为是 如果它们的对象不是同一个对象,即使值 它们中的大多数是相同的,因此:


当我们用它来比较两种不同的类型时,规则是什么

你发表的文章对此进行了解释,我引述如下:

如果两个操作数的类型不同,JavaScript将转换 然后应用严格比较。如果任一操作数为 如果是数字或布尔值,则操作数将转换为数字 可能的否则,如果任一操作数为字符串,则字符串操作数为 如果可能,转换为数字。如果两个操作数都是对象,则 JavaScript比较操作数相同时的内部引用 引用内存中的同一对象


那篇文章中有很多详细信息:

如果两个操作数不属于同一类型,JavaScript将转换操作数,然后应用严格比较

  • 如果任一操作数是数字或布尔值,则操作数为 如果可能,转换为数字
  • 否则,如果任一操作数是字符串,则字符串操作数为 如果可能,转换为数字
  • 如果两个操作数都是对象,则JavaScript比较内部 当操作数引用中的同一对象时相等的引用 内存
  • 因此,对于数字、布尔值和字符串:

    false == 0 == ""
    true == 1 == "1" != "any other string (including empty)"
    
    当我们使用它来比较两个对象时,规则是什么

    对于
    (和
    =
    )比较,JavaScript引擎调用对象上的
    valueOf
    toString
    方法(如果可用),以检查大小。在本例中:

    var a = {};
    var b = {};
    console.log(a < b);
    
    var a={};
    var b={};
    控制台日志(a
    JavaScript测试以下条件并返回false:

    "[object Object]" < "[object Object]" // false
    
    “[对象]”<“[对象]”//false
    
    当我们用它来比较两种不同的类型时,规则是什么


    规则是一样的。

    在比较之前,对象被转换为字符串。

    您应该看看Rhino的书,JavaScript:The Definitive Guide()。这对JavaScript中的类型转换和比较有很好的解释。
    false == 0 == ""
    true == 1 == "1" != "any other string (including empty)"
    
    var a = {};
    var b = {};
    console.log(a < b);
    
    "[object Object]" < "[object Object]" // false