`

javascript中==与===的区别

阅读更多

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

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

分享到:
评论

相关推荐

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

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

    南京华信智原javascript中“==”和“===”区别完美版资料.ppt

    在JavaScript中,“==”和“===”是用来比较变量之间相等性的运算符,它们之间的主要区别在于类型转换和比较的严格性。 “==”(等同)运算符在比较时,如果两边的值类型不同,会尝试进行类型转换后再进行比较。...

    javascript中的相等操作符(==与===区别).docx

    ### JavaScript中的相等操作符(`==`与`===`的区别) #### 一、引言 在JavaScript编程中,比较两个变量是否相等是非常常见的需求。ECMAScript提供了两种主要的相等操作符:“==”(相等)和“===”(全等),它们...

    简略说明Javascript中的= =(等于)与= = =(全等于)区别

    在JavaScript的switch语句中,实际上使用的是全等于`===`来进行判断,这意味着在case部分的值必须与switch表达式的结果具有相同的值和类型,才会执行对应的代码块。 此外,一个特殊的规则是,`undefined` 和 `null`...

    JavaScript里 ==与===区别详解

    在JavaScript中,比较运算符用来比较两个值,并返回一个表示比较结果的布尔值。比较运算符分为两种:“==”和“===”。虽然表面上看两者非常相似,但它们在比较值时的规则却大不相同,下面详细介绍它们的区别。 ...

    javaScript中"=="和"==="的区别详解

    对于JavaScript中比较运算符,可能大家用的比较多的是“==”、对于“===”很多人可能很陌生。=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等;== 表示相等即仅仅比较两边变量...

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

    在Javascript中有”==”和”===”两种比较运行符,那么他们有什么区别呢? 一、对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果...

    JavaScript.中文学习文档

    - **1.1.3 JavaScript与Java的区别** - JavaScript 和 Java 在名称上有相似之处,但它们实际上是两种完全不同的编程语言。 - Java 是一种静态类型的面向对象编程语言,通常需要编译成字节码后在 Java 虚拟机 (JVM)...

    前端面试题之baseJS-==和===的区别.zip

    面试中,经常会遇到一些考察基础知识的问题,比如“==”和“===”的区别。这两个运算符在JavaScript中用于比较操作,但它们的用法和行为有所不同。 “==”(等于)运算符在进行比较时会进行类型转换。如果比较的两...

    JavaScript中的"=、==、==="区别讲解

    在JavaScript中,`=`, `==`, 和 `===` 是三个不同的比较运算符,它们在比较时有着不同的行为和规则。 1. **`= (赋值运算符)**:这是最基础的赋值运算符,用于将右边的值赋予左边的变量。例如: ```javascript var...

    javascript中等于(==)与全等(===)的区别说明

    在JavaScript编程语言中,“等于”(==)与“全等”(===)是两个基础但极其重要的运算符,它们用于比较变量之间的值。初学者常常会忽略这两个运算符之间的区别,而这种忽视往往会导致逻辑判断错误,程序运行结果与...

    JavaScript学习基础学习心得

    JavaScript可以通过多种方式被引入到网页中: 1. **页面嵌入式**:通过`<script type="text/javascript"></script>`标签直接在HTML文档中嵌入JavaScript代码。 2. **外部文件**:通过`<script type="text/...

    JS 特殊数据类型的 == 和 === 比较

    在JavaScript(JS)中,`==` 和 `===` 是两种常见的比较运算符,它们用于判断两个值是否相等。然而,这两个运算符在处理特殊数据类型时有着显著的差异,这经常会让开发者感到困惑。下面我们将深入探讨这两个运算符的...

    javaScript中”==”和”===”的区别详解

    区别: ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ==,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 “===”,这个比较简单。下面的规则用来判断两个值是否===相等: 1、如果类型不同,...

    Javascript函数与对象

    在JavaScript中,函数与对象是两个核心概念,它们构成了这门语言的基石。本文将深入探讨这两个主题,帮助读者更好地理解并掌握JavaScript。 #### 函数 函数是JavaScript中的第一类公民,这意味着它们可以像变量...

    JavaScript详解.doc

    JavaScript语法与Java类似,但也有一些显著区别。例如,JavaScript是弱类型语言,这意味着在声明变量时无需指定数据类型。变量可以用`var`关键字定义,且可以随时改变其数据类型。例如: ```javascript var x = 3; x...

    第15章 javascript面向对象与原型

    然而,ECMAScript中并没有引入类的概念,这就使得JavaScript中的对象与传统面向对象语言中的对象存在差异。 接下来,我们将详细探讨在进行面向对象与原型的学习时所需的条件。首先,基础是必不可少的。JavaScript的...

    空链接 href="#"与href="javascript-void(0)"的区别.docx

    ### 空链接 `href="#"` 与 `href="javascript:void(0)"` 的区别 在Web开发中,我们经常会遇到两种类型的空链接:一种是使用 `href="#"`,另一种则是使用 `href="javascript:void(0)"`。这两种写法在实际应用中看...

Global site tag (gtag.js) - Google Analytics