JavaScript ==
和===
运算符的区别
JavaScript广泛用于创建交互式网页。它有许多框架,如React JS,Angular JS,Node JS等。与其他编程语言一样,JavaScript也提供了算术、关系、比较等运算符。等值运算符"=="
是一种比较运算符,用于检查左边和右边是否相等。这个运算符在所有其他编程语言中都存在,但在JavaScript中稍有不同。原因是JavaScript是一种弱类型语言,而其他语言都是强类型语言。由于JavaScript是弱类型的,它不会比较给定的两个变量的类型。这可以通过强制转换的概念来解释。
JavaScript中的强制转换
让我们假设我们需要将取值分别为2和3的两个变量”x”和”y”相加。我们将得到5作为输出。但如果我们用一个字符串来加”x”呢?假设我们将变量”x”与一个空字符串” “相加。
为了执行操作,两个值必须是相同的类型。因此,当我们运行它时,JavaScript将两个值都视为字符串并将它们连接在一起。这种考虑取决于所使用的运算符的类型。
如果我们对两个数字进行减法运算,其中一个是字符串类型,那么它们不会连接在一起,而是相减。因此,我们可以说JavaScript根据正在执行的操作隐式地转换数据类型。这就是所谓的强制转换。
现在,让我们将这个概念应用到双等号(==
)运算符上。考虑两个变量”x”和”y”,它们的值都是3,但”x”变量中的”3″是一个字符串类型。
x = "3"
y = 3
假设我们比较 “x” 和 “y”,即 "x == y"
。由于一个是字符串类型,另一个是数字类型,我们预期得到 false 作为输出,就像其他编程语言一样。但是在JavaScript中,我们得到的是”True”。
这是因为JavaScript中的双等号(==
)不考虑类型,而是使用转换的概念将一个数据类型转换为另一个数据类型,并执行操作。但是隐式转换数据类型并不总是明智的选择。
为了解决这个问题,我们使用三等号(===
)替代双等号。三等号运算符是严格类型的,它考虑变量的数据类型来进行比较。
如果我们使用三等号来比较"x === y"
,那么我们将得到 “False” 的结果。建议始终使用三等号运算符,因为它会给出正确的输出结果。
现在我们来看几个示例来更好地理解这个概念-
示例1
如果我们比较两个相同的字符串,双等号和三等号都会给出true作为输出。
str1 = "example"
str2 = "example"
str1 == str2 // True
str1 === str2 // True
示例2
如果我们将字符串和数字进行比较,双等号和三等号都会返回false。
str1 = "example"
str2 = 3
str1 == str2 // False
str1 === str2 // False
示例3
如果我们比较两个相同的数字,其中一个是字符串类型,那么双等号(==
)会返回真,而三等号(===
)会返回假。
str1 = "7"
str2 = 7
str1 == str2 // True
str1 === str2 // False
示例4
让我们来看两个变量 var1 和 var2 其中前者将字符串”8″存储,而后者的值为7。如果我们将这两个变量相减,并比较是否等于1,双等号和三等号都会输出True。当我们进行减法运算时,JavaScript会隐式将字符串值转换为数字类型。因此,结果的类型变为数值类型,并且都输出True。
var1 = "8"
var2 = 7
y = var1 – var2
y==1 // True
y === 1 // True
示例5
如果我们将零与false进行比较,双等号(==
)返回true,而三等号(===
)返回false作为输出结果。
0 == False // True
0 === False // False
这是因为”0″和False都具有相同的值,即false。因此,双等号会隐式地转换其中之一。而三等号中,”0″是数字类型,而False是布尔类型。因此,它的输出为false。
在JavaScript中,双等号(==
)和三等号(===
)的区别
下表重点介绍了JavaScript中双等号()和三等号(=)的主要区别:
特点 | 双等号(== ) |
三等号(=== ) |
---|---|---|
函数 | 双等号(== )只比较两个变量的值,而不比较它们的数据类型。 |
三等号(=== )会检查两个变量的值和数据类型。 |
强制转换 | 它遵循强制转换的概念。 | 它不遵循强制转换的概念。 |
类型转换 | 它会隐式地转换类型以进行操作。 | 它不会转换它们原始的数据类型。 |
弱类型或严格类型 | 它是弱类型的。 | 它是严格类型的。 |
结论
双等号和三等号是JavaScript中的比较运算符,用于比较给定的两个变量或值是否相等。双等号(==
)运算符是宽松类型的,只比较值。相反,三等号(===
)运算符是严格类型的,除了比较值外,还考虑数据类型。