JavaScript中==和===有什么区别?

Exc*_*ion 4 javascript equals-operator identity-operator

可能重复:
Javascript === vs ==:我使用哪个"相等"运算符是否重要?
什么时候JavaScript ==比===更有意义?

将字符串与未定义值进行比较时,以下方法之间的区别是什么.

 var x; 
 if(x==undefined) 
 { 
  alert(x); 
 }
Run Code Online (Sandbox Code Playgroud)

if(x===undefined)
{ 
  alert(x); 
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,为什么我更喜欢第二种方法..请让我知道优点..

小智 16

  • == 尝试在测试之前将值转换为相同类型,如果它们是相同的. "5" == 5
  • ===不这样做; 它要求对象具有相同的类型."5" !== 5

在这种情况下,结果是:

  • x == undefined如果xundefined或将是真的null.
  • x === undefined如果只会是真实xundefined.

如果你想要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"
Run Code Online (Sandbox Code Playgroud)


Hit*_*sal 8

假设我们有x = 5,

==等于

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

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

x === 5为真x ==="5"为假

希望你理解这个概念


Som*_*Guy 5

===也检查相同的类型.你会理解一些例子:

(1 == '1') //Returns true
Run Code Online (Sandbox Code Playgroud)

由于==不打扰类型,返回true.但是,如果您需要严格的类型检查,那么您将使用===因为只有当它具有相同类型并且值相同时才返回true .

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

参考


小智 5

==只是比较两个值,如果它们是不同的类型,则完成类型转换

===比较值和它们的类型 - 因此这里不会进行类型转换.