【问题标题】:What is the difference between == and === in JavaScript? [duplicate]JavaScript 中 == 和 === 有什么区别? [复制]
【发布时间】:2011-12-29 06:16:48
【问题描述】:

可能重复:
Javascript === vs == : Does it matter which “equal” operator I use?
When would JavaScript == make more sense than ===?

以下方法在比较字符串与未定义值时有什么区别。

 var x; 
 if(x==undefined) 
 { 
  alert(x); 
 }

if(x===undefined)
{ 
  alert(x); 
}

为什么在这种情况下我更喜欢第二种方法.. 请告诉我优点..

【问题讨论】:

标签: javascript equals-operator identity-operator


【解决方案1】:
  • == 在测试它们是否相同之前尝试将它们转换为相同的类型。 "5" == 5
  • === 不这样做;它要求对象具有相同的类型才能相等。 "5" !== 5

在这种情况下,结果是:

  • 如果xundefinednullx == undefined 将为真。
  • 只有当xundefined 时,x === undefined 才会为真。

如果您希望 undefined 和 null 被同等对待,您应该更喜欢第一种方法。一种常见的用法是可选的函数参数。

function greet(name, greeting) {
    if (name == undefined) name = 'World';
    if (greeting == undefined) greeting = 'Hello';
    alert(greeting + ' ' + name);
}

greet(); // alerts "Hello World"
greet("Bob"); // alerts "Hello Bob"
greet(null, "Goodbye"); // alerts "Goodbye World"

【讨论】:

    【解决方案2】:

    == 只是比较两个值,如果是不同的类型,则进行类型转换

    === 比较值及其类型 - 因此这里不会进行类型转换。

    【讨论】:

      【解决方案3】:

      假设我们有 x=5,

      == 等于

      x==8 为假 x==5 为真

      === 完全等于(值和类型)

      x===5 为真 x==="5" 是假的

      希望你理解这个概念

      【讨论】:

        【解决方案4】:

        === 也会检查相同的类型。举几个例子就明白了:

        (1 == '1') //Returns true
        

        因为== 不关心类型,所以返回true。然而,如果你想要严格的类型检查,你会使用===,因为它返回true 只有如果它是相同的类型,并且是相同的值。

        (1 === '1') //Returns false
        (1 === 1) //Returns true
        
        • 当两个字符串具有相同的字符序列、相同的长度和对应的字符时,它们是严格相等的
          职位。
        • 当两个数字在数值上相等(具有相同的数值)时,它们是严格相等的。 NaN 不等于任何东西,
          包括 NaN。正零和负零彼此相等。
        • 如果两个布尔操作数都为真或都为假,则两个布尔操作数严格相等。
        • 如果两个对象引用同一个对象,则它们是严格相等的。
        • Null 和 Undefined 类型是 ==(但不是 ===)。

        Reference

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-29
          • 2016-10-14
          • 2018-06-03
          • 2019-01-17
          • 1970-01-01
          • 1970-01-01
          • 2013-05-26
          • 2011-05-15
          相关资源
          最近更新 更多