JavaScript ==与===

确定两个变量是否相等是编程中的一个非常重要的操作。

JavaScript提供了两组操作符:相等(==)——先转换再比较, 全等(===)——仅比较而不转换

JavaScript所有的类型比较无非在5种基本数据类型之间进行:Boolean, Number, String, Null, Undefined

首先来看前三种基本数据类型(Boolean, Number, String),它们三者之间可以进行六种结合。

当使用==操作符时,会有以下转换规则:

Number 与 Number --> Number

Number 与 Boolean --> Number

Number 与 String   --> Number

Boolean 与 Boolean --> Number

Boolean 与 String   --> Number

String   与 String   --> String

综上:除String与String之间的比较,进行纯字符串之间的比较,其余五种情况均转换为Number再进行比较。

既然要转换为Number类型再进行比较,我们来看其转换规则,将其它类型转换为Number类型,用的是转换函数Number(),转换规则如下:

Boolean: true -->1 , false --> 0

Null: null --> 0

Undefined: undefined --> NaN

Number: Number --> Number

String: 如果只包含数字,则转换为相应数字,如‘123’ --> 123

    如果字符串为空,则转换为0, ‘’ --> 0

    其实情况转换为 NaN

记住:NaN与任何值都不相等,包括NaN本身。

再来看余下的两个基本数据类型Null与Undefined,它们有以下规则:

null == undefined
null == null
undefined == undefined
除了以下三组比较相等外,null和undefined与任何其它值都不相等。

一些有趣的示例:

'' == '0'           // false
0 == ''             // true
0 == '0'            // true

false == 'false'    // false
false == '0'        // true

false == undefined  // false
false == null       // false
null == undefined   // true

' 	
 ' == 0     // true

再来看===

===再比较之前不进行数据类型转换,类型和值都要相等

如:‘55’ === 55  // false, 因为数据类型不相等

以下特殊情况:

null === undefined  // true

NaN === NaN   // false

+0 === -0  // true

总结:推荐使用===

原文地址:https://www.cnblogs.com/loveyunk/p/6732526.html