6

可能重复:
Javascript === vs ==:我使用哪个“相等”运算符有关系吗?
JavaScript == 什么时候比 === 更有意义?

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

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

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

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

4

4 回答 4

18
  • ==在测试它们是否相同之前尝试将值转换为相同的类型。"5" == 5
  • ===不这样做;它要求对象具有相同的类型才能相等。"5" !== 5

在这种情况下,结果是:

  • x == undefinedx如果isundefined或将是真的null
  • x === undefinedx仅当is时才为真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"
于 2011-11-15T06:35:49.820 回答
9

假设我们有 x=5,

== 等于

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

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

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

希望你理解这个概念

于 2011-11-15T06:35:49.313 回答
7

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

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

于 2011-11-15T06:36:05.717 回答
6

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

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

由于==不关心类型,因此返回 true。但是,如果你想要严格的类型检查,你会使用===,因为只有当它是相同的类型并且是相同的值时才会返回 true。

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

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

参考

于 2011-11-15T06:35:26.213 回答