`

【转】浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别

 
阅读更多

首先,先做个简单的介绍,让先有个直观的认识

== equality 等同     === identity 恒等

==  两边值类型不同的时候,要先进行类型转换,再比较。 
=== 不做类型转换,类型不同的一定不等。

举例说明:

"1"  ==  true

类型不同,"=="将先做类型转换,把true转换为1,即为 "1"  ==  1;

此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;

此时,"==" 左右两边的类型都为数值型,比较成功!

如果比较:"1"  ===  true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false;

如果比较:"1"  ===  1      左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false;

如果比较: 1   ===  1       左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;

如果比较: 1   ===  2      左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false;

简而言之就是 "==" 只要求值相等; "===" 要求值和类型都相等 ^_^

============================================================================

下面,我们对"=="和"==="的区别,做一些较为深入的剖析介绍

先说 ===,这个比较简单,具体比较规则如下:
1、如果类型不同,就[不相等] 
2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 
4、如果两个值都是true,或者都是false,那么[相等]。 
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 
6、如果两个值都是null,或者都是undefined,那么[相等]。

再说 ==,具体比较规则如下:

1、如果两个值类型相同,进行 === 比较,比较规则同上 
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 
a、如果一个是null、一个是undefined,那么[相等]。 
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂) 
e、任何其他组合(array数组等),都[不相等]。

举例说明: 
"1" == true 
类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。 

= 赋值运算符 
== 等于 
=== 严格等于 
例: 
var a = 3; 
var b = "3"; 

a==b 返回 true 
a===b 返回 false 

因为a,b的类型不一样   ===用来进行严格的比较判断,结果为false

=============

var priceOfApple = "3元"; // 苹果的价格
var priceOfBanana = "3.5元"; // 香蕉的价格
priceOfApple = parseInt( priceOfApple ); // 解析苹果的价格
var priceOfBanana2 = parseInt( priceOfBanana ); // 解析香蕉的价格
if( ( priceOfApple===3 ) && ( priceOfBanana2 === 3 ) // 检查解析是否成功
&& ( parseFloat( priceOfBanana ) ===3.5 ) ) 
{
alert( "苹果的价格:" + priceOfApple // 输出水果的价格
+ "\n香蕉的价格的整数部分:" + priceOfBanana2
+ "\n香蕉的价格:" + parseFloat( priceOfBanana ) );
}

 

原文链接

分享到:
评论
1 楼 0情非得已0 2014-05-14  

相关推荐

    JavaScript中三个等号和两个等号的区别(== 和 ===)浅析

    在JavaScript编程中,比较运算符用于比较两个值是否相等。其中,最常用的比较运算符是双等号“==”和三等号“===”。这两个运算符虽然看似相似,但它们在比较值时却有着本质的区别。了解它们的不同用法,对于编写高...

    浅析php中三个等号(===)和两个等号(==)的区别

    两个等号表示只要值相等就满足条件。 再来补充一些:$a=’2′;//字符型2$b=2;//数值型2$a==$b,是对的,都是2$a===$b,是不对的,因为$a是字符型$b是数值型,值虽一样,但类型不一样。还有就是“linvo1986 – 六级”...

    浅析Javascript中双等号(==)隐性转换机制

    在Javascript中判断相等关系有双等号(==)和三等号(===)两种。其中双等号(==)是值相等,而三等号(===)是严格相等(值及类型是否完全相等)。 因此有几个常识知识: 1、对于string,number等基础类型,==和===是有区别...

    浅析Javascript中“==”与“===”的区别

    JavaScript中的等号运算符分为双等号“==”和三等号“===”,这两个运算符都是用来判断两边表达式的值是否相等,但是它们在比较值时的行为有所不同。 首先,双等号“==”被称为抽象相等比较符。当使用双等号进行...

    浅析js中2个等号与3个等号的区别

    理解这两个操作符的区别,可以帮助开发者写出更加健壮和可靠的JavaScript代码,减少因类型转换产生的错误和意料之外的行为。在编写条件语句、比较逻辑或进行数据验证时,明智地选择使用"=="还是"===",能够提高代码...

    浅析JavaScript中的事件机制

    在当今的网络开发中,JavaScript已经成为了前端开发不可或缺的一部分。它赋予网页动态性和交互性,允许开发者响应用户的操作和浏览器事件。接下来,我们将深入探讨JavaScript中的事件机制,这将有助于我们更好地理解...

    浅析Javascript ES6新增值比较函数Object.is

    在JavaScript编程语言中,比较两个值是否相等是经常需要进行的操作。传统的比较操作符有等号“==”、严格等号“===”、不等号“!=”和严格不等号“!==”。等号“==”会在比较时进行类型转换,而严格等号“===”则...

    浅析JS获取url中的参数实例代码

    在这个函数内部,我们将定义两个变量name和value来存储每一个参数的名称和值。接着,通过访问location.href属性获取当前页面的完整URL字符串,将其存入变量str。 为了从URL中分离出参数部分,我们需要找到"?"的位置...

Global site tag (gtag.js) - Google Analytics