Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中==和===之间的区别是什么?_Javascript_Equals Operator_Identity Operator - Fatal编程技术网

JavaScript中==和===之间的区别是什么?

JavaScript中==和===之间的区别是什么?,javascript,equals-operator,identity-operator,Javascript,Equals Operator,Identity Operator,可能重复: 在比较字符串和未定义值时,以下方法之间的区别是什么 var x; if(x==undefined) { alert(x); } 及 在这种情况下,我为什么要选择第二种方法。。请让我知道你的优点 ==也会检查相同的类型。您将通过几个示例了解: (1 == '1') //Returns true 因为==不需要处理类型,所以返回true。但是,如果希望进行严格的类型检查,则应该使用=,因为只有当它的类型相同且值相同时,才会返回true (1 === '1')

可能重复:

在比较字符串和未定义值时,以下方法之间的区别是什么

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


在这种情况下,我为什么要选择第二种方法。。请让我知道你的优点

==
也会检查相同的类型。您将通过几个示例了解:

(1 == '1') //Returns true
因为
==
不需要处理类型,所以返回true。但是,如果希望进行严格的类型检查,则应该使用
=
,因为只有当它的类型相同且值相同时,才会返回true

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

==等于

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

==正好等于(值和类型)

x==5是真的 x==“5”为假

希望您理解这个概念

  • =
    尝试在测试值是否相同之前将其转换为相同类型<代码>“5”==5
  • ==
    不这样做;它要求相同类型的对象相等<代码>“5”!==5
在这种情况下,结果是:

  • 如果
    x
    undefined
    null
    ,则
    x==undefined
    将为真
  • x===undefined
    只有在
    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"

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


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

Dup:@deceze场景不同…@user然后。==不检查数据类型,其中as==检查数据类型
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"