技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

【实例】详解JS中==和===、!=和!==的使用区别

作者:admin    时间:2022-5-24 23:15:39    浏览:

JavaScript条件判断中,双等号“==”和三等号“===”都是用来比较两者是否相等的符号,多数情况下,我们都是用“==”,但是有时我们也看到有人用“===”,我之前也不太详究,认为使用“==”就足够了,完全用不到“===”。其实,这种想法是不对的,编写程序应该是严谨的,使用“===”肯定有它的理由,并且是“==”不可代替的。今天,我又看到了有个实例代码里使用了“===”,我决定认真学习一下,了解和懂得“==”与“===”的使用区别。

 详解JS中==和===、!=和!==的使用区别

==和===之间的区别

=====的区别在于:

  • == 在执行比较之前将变量值转换为相同的类型。这称为类型强制。
  • === 不进行任何类型转换(强制),并且仅当被比较的两个变量的值和类型都相同时才返回true 。

何时在 JavaScript 中使用 ==?

Javascript 中的双等号 (==) 类似于三等号 (===) 运算符,因为它们被视为比较运算符。但是,==(双重相等)运算符用于查找抽象相等。这意味着双等号 (==) 执行类型转换以供使用,然后比较两个值。

下面的示例将返回 true,因为双等号运算符将执行称为类型强制的操作,将两个值转换为相同的类型并进行比较。

if (100 == '100') {
    //等式成立
}

再看下面一个示例

var one = 1;
var one_again = 1;
var one_string = "1";  // 注:这是一个字符串

console.log(one ==  one_again);  // true
console.log(one === one_again);  // true
console.log(one ==  one_string); // true. 看下面解释.
console.log(one === one_string); // false. 看下面解释.

第 7 行:console.log(one == one_string)返回true因为两个变量oneone_string包含相同的值,即使它们具有不同的类型:one的类型是Number,而one_string是字符串,但是由于==操作符进行了类型转换,所以结果为true

第 8 行:console.log(one === one_string)返回false,因为两个变量的类型不同。

何时使用此运算符取决于你的程序。如果你预见到类型转换会破坏代码,你可能需要使用(===) 运算符。

何时在 JavaScript 中使用 ===?

三等号 (===) 运算符在 JavaScript 中被认为是严格的比较运算符。当你想要比较两个值并考虑类型时,你将使用此运算符。使用前面的示例,你会得到相反的响应。

if (100 === '100') {
    //等式不成立
}

===比==快吗?

理论上,当比较具有相同类型的变量时,两个运算符的性能应该相似,因为它们使用相同的算法。当类型不同时,三等号运算符 ( ===) 应该比双等号 ( ==) 执行得更好,因为它不必执行类型强制的额外步骤。

但是如果你仔细想想,性能是完全无关紧要的,不应该在决定何时使用一个运算符而不是另一个时发挥作用。要么你需要类型强制,要么你不需要。如果你不需要它,请不要使用双等号运算符 ( ==),因为你可能会得到意想不到的结果。例如,"1" == true"" == 0将返回true,再如下面的示例:

0 == false   // true
0 === false  // false 它们类型不同
1 == "1"     // true 类型被强制转换
1 === "1"    // false 它们类型不同
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false

简而言之,除非你需要类型强制(在这种情况下,请使用==) ,否则请始终在任何地方都使用===

不等式运算符:!= 和 !==

与双等号和三等号对应的,是这两个不等式运算符:!=!==

  • !=: 如果变量是不同类型,则在检查不等式之前转换值
  • !==: 检查被比较的两个变量的类型和值

示例

var one = 1;
var one_again = 1;
var one_string = "1";  // 注: 这是一个字符串

console.log(one != one_again);  // false
console.log(one != one_string); // false
console.log(one !== one_string); // true. 类型不同

相等运算符和对象(以及其他引用类型)

到目前为止,我们一直在探索使用原始类型的等式或不等式运算符。像ArraysObjects这样的引用类型呢?如果我们创建两个具有相同内容的数组,我们是否可以使用相等运算符来比较它们?答案是否定的,你不能。我们来看一个例子:

var a1 = [1,2,3,4,5]
var a2 = [1,2,3,4,5]

console.log(a1 ==  a2); // false
console.log(a1 === a2); // false

在这里, =====返回相同的答案:false。这里发生的是a1a2指向内存中的不同对象。尽管数组内容相同,但它们本质上具有不同的值。同样适用于对象和其他引用类型。

总结

通过前面的简单示例说明,现在你应该了解和懂得 JavaScript 中 “==”和“===” 运算符以及“!=”和“!==”不等号的区别了吧,最主要是要清楚何时使用哪一个。

您可能对以下文章也感兴趣

标签: 双等号  三等号  ==  ===  
相关文章
    x
    • 站长推荐
    /* 左侧显示文章内容目录 */