【问题标题】:Javascript Comparison between string Text and String() object [duplicate]字符串文本和String()对象之间的Javascript比较[重复]
【发布时间】:2017-03-03 15:56:21
【问题描述】:

在使用 ( == ) 运算符将字符串文本与字符串对象进行比较时,返回 true

var o = new String("ss");

var s = "ss";//return "ss" (string)

console.log(o);//return object    

console.log(o==s);//return true

我怎么理解?

【问题讨论】:

  • == 运算符将在进行任何必要的类型转换后比较是否相等。 === 运算符不会进行转换,因此如果两个值的类型不同,=== 将简单地返回 false。两者都同样快。
  • 什么是“文本”对象?

标签: javascript


【解决方案1】:

这是因为== 只是比较os 的值。 === 会比较值和类型。

一个小例子:

console.log(1337 == "1337"); // true
console.log(1337 === "1337"); // false

console.log(1 == true); // true;
console.log(1 === true); // false

console.log("string" == new String("string")); // true
console.log("string" === new String("string")); // false

console.log(undefined == null); // true
console.log(undefined === null); // false

【讨论】:

    【解决方案2】:

    == 运算符将在进行任何必要的类型转换后比较是否相等。 === 运算符不会进行转换,因此如果两个值的类型不同,=== 将简单地返回 false。两者都一样快。

    JavaScript 有两组相等运算符:=== 和 !==,以及它们的邪恶双胞胎 == 和 !=。好的工作按您期望的方式工作。如果两个操作数的类型相同且值相同,则 === 产生 true,!== 产生 false。当操作数属于同一类型时,邪恶双胞胎会做正确的事情,但如果它们属于不同类型,它们会尝试强制值。他们这样做的规则既复杂又难以忘怀。以下是一些有趣的案例:

    示例:

    '' == '0'           // false
    0 == ''             // true
    0 == '0'            // true
    
    false == 'false'    // false
    false == '0'        // true
    
    false == undefined  // false
    false == null       // false
    null == undefined   // true
    
    ' \t\r\n ' == 0     // true
    

    您可以在此链接中查看详细信息:link

    【讨论】:

      猜你喜欢
      • 2018-10-17
      • 2021-09-14
      • 2017-09-18
      • 1970-01-01
      • 2017-06-27
      • 2011-03-18
      • 2020-04-22
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多