`

js比较运算符==与===的区别

 
阅读更多

===操作符: 
要是两个值类型不同,返回false 
要是两个值都是number类型,并且数值相同,返回true 
要是两个值都是stirng,并且两个值的String内容相同,返回true 
要是两个值都是true或者都是false,返回true 
要是两个值都是指向相同的Object,Arraya或者function,返回true 
要是两个值都是null或者都是undefined,返回true 
==操作符: 
如果两个值具有相同类型,会进行===比较,返回===的比较值 
如果两个值不具有相同类型,也有可能返回true 
如果一个值是null另一个值是undefined,返回true 
如果一个值是string另个是number,会把string转换成number再进行比较 
如果一个值是true,会把它转成1再比较,false会转成0 
如果一个值是Object,另一个是number或者string,会把Object利用 valueOf()或者toString()转换成原始类型再进行比较

转自:http://www.jb51.net/article/17542.htm

一下举例说明:

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

== 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 ) );
}

转自:http://hi.baidu.com/zealot886/item/b85da7e39015d82a6cabb839

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    javascript相等运算符与等同运算符

    javascript相等运算符与等同运算符

    JavaScript常用运算符和操作符总结(教辅)

    JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)JavaScript常用运算符和操作符总结(教辅)...

    JavaScript基础之运算符

    JS运算符算术运算符比较运算符关系运算符位运算符赋值运算符条件运算符typeof 运算符对象运算符 JavaScript支持一下几种运算符: 算术运算符 比较运算符 关系运算符 赋值运算符 条件运算符 算术运算符 运算符 ...

    js比较和逻辑运算符的介绍

    比较和逻辑运算符用于测试 true 或 false。 比较运算符比较运算符在逻辑语句中使用,以测定变量或值是否相等。 给定 x=5,下面的表格解释了比较运算符: 运算符 描述 例子 == 等于 x==8 为 false === 全等(值...

    JavaScript 运算符

    JavaScript 运算符 运算符 = 用于赋值。 运算符 + 用于加值。 运算符 = 用于给 JavaScript 变量赋值。 算术运算符 + 用于把值加起来。 实例 指定变量值,并将值相加: y=5; z=2; x=y+z; 在以上语句执行后,x 的值...

    Javascript常用运算符

    Javascript常用运算符

    js表达式与运算符简单操作示例

    本文实例讲述了js表达式与运算符简单操作。分享给大家供大家参考,具体如下: /** * Created by Administrator on 2017/12/14. * 表达式与运算符 */ //1.基本表达式 加减乘除 var a = 4; a = 7/6; var b = (a + 4)/...

    js运算符优先级

    js开发运算符优先级列表,需要的可以看一下,运算符优先级.pdf

    javascript运算符

    自己做的 课件 js运算符 可以参考 适用于15分钟的课件

    JS运算符简单用法示例

    本文实例讲述了JS运算符简单用法。分享给大家供大家参考,具体如下: js中的运算符 算术运算符:+,-,*,/,% 逻辑运算符:&,&&,|,||,! 自增运算符:++,–,+=,-= 关系运算符:<,>,=,<=,>=,!= 等于...

    详解JavaScript中的Object.is()与===运算符总结

    但是,ES2015规范引入了 Object.is(),其行为与严格的相等运算符几乎相同: Object.is(1, 1); // => true Object.is(1, '1'); // => false Object.is(1, true); // => false 主要问题是:什么时候使用 Object.is...

    详解js中==与===的区别

    1、对于string,number等基础类型,==和===是有区别的 不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 同类型比较,直接进行“值”比较,两者结果一样 2、对于...

    js基础运算符及表达式

    js基础运算符及表达式

    JavaScript相等运算符的九条规则示例详解

    ==称为相等运算符,比较的是两个操作数值是否相等;===称为严格相等运算符,比较的是两个操作数是否是“同一个值”。 针对相等运算符==和===,有两个对应的!=和!==运算符,这两个不相等运算符的运算结果是==和===...

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

    javascript中比较运算符'=='与'==='可能大家用的比较多,但是大家对他的区别不是很清楚,接下来小编给大家介绍下js中三个等号和两个等号的区别(== 和 ===),感兴趣的朋友可以参考下

    Web前端开发技术-使用JavaScript运算符.pptx

    使用JavaScript运算符;算术运算符;使用JavaScript运算符;使用JavaScript运算符;使用JavaScript运算符;使用JavaScript运算符;比较运算符;使用JavaScript运算符;逻辑运算符;使用JavaScript运算符;使用JavaScript运算符...

    javascript相等运算符与等同运算符详细介绍

    ==运算符是相等运算符,它采用比较宽松的同一特质定义比较两个运算数是否相等。 这样概念有个基本认识。 下面说下具体判定两个值是相等情况吧。 ===运算符两个值比较 1,如果两个值类型不同,它们就不相同 2,如果两...

    【JavaScript源代码】ES6扩展运算符的理解与使用场景.docx

    ES6扩展运算符的理解与使用场景  目录 1、替代apply方法,一般在函数调用时处理参数2、剩余参数(rest运算符),主要针对函数形参 3、数据连接、合并 4、数组和对象的拷贝 5、字符串转数组 6、在函数调用时使用拓展...

Global site tag (gtag.js) - Google Analytics