`

==与===详解

js 
阅读更多

    在做项目的时候遇到的,看了一些博客后,特地分享一下,做个记录,供以后查看。

 

     js中   == 与 === 区别

 

1、对于string,number等基础类型,==和===是有区别的

(1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等

(2)同类型比较,直接进行“值”比较,两者结果一样

2、对于Array,Object等高级类型,==和===是没有区别

   进行“指针地址”比较

3、基础类型与高级类型,==和===是有区别的

(1)对于==,将高级类型转化为基础类型,进行“值”比较

(2)因为类型不同,===结果为false

 

    使用“==”时,如果两边类型不同,js引擎会把他们转换成相同类型然后在进行比较,“===”则不会进行类型转换,因此当两边不是属于同一个类型,结果不相等。例如:

    var a = 0, b = '0';

    alert(( a==b ) + '--' + ( a===b ));

    此时看到的结果为“true--false”。

 

    ===判断规则

1.如果类型不同,就不相等

2.如果两个都是数值,并且是同一个值,那么相等;(!例外)的是,如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能用isNaN()来判断)

3.如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等

4.如果两个值都是true,或者都是false,那么相等

5.如果两个值都引用同一个对象或函数,那么相等,否则不相等

6.如果两个值都是null,或者都是undefined,那么相等

    ==判断规则

1.如果两个值类型相同,进行===比较

2.如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:

    ①如果一个是null、一个是undefined,那么相等

    ②如果一个是字符串,一个是数值,把字符串转换成数值再进行比较

    ③如果任一值时true,把它转换成1再比较;如果任一值时false,把它转换成0再进行比较

    ④如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,

    ⑤任何其他组合,都不相等

 

特别需要注意的是true、false的转换,例如:

    alert(true == 1) ;      //true

    alert(true == 2) ;      //false,  true会转换成number,也就是1,当然1不等于2

    //可以使用!!来把一个数据类型转换为boolean型

    alert( true == !!2 )    //true,    !2===false !(!=2) = !false = true

    另外在js中,如果把一个变量用在逻辑运算中,那么变量再无初始值或者其值为0、-0、null、""、false、undefined或者NaN时,它的值为false。否则,其值为true。

 

分享到:
评论

相关推荐

    Zabbix表结构详解-PPT-共13页.zip

    Zabbix表结构详解-PPT-共13页.zip ============================================== Zabbix表结构详解-PPT-共13页.zip ============================================== Zabbix表结构详解-PPT-共13页.zip ========...

    【0分】【详细书签】【非扫描】TCP-IP详解卷一:协议

    TCP-IP详解卷一:协议 ========================================================= csh提供的电子书目录: ... ...电子书定期更新,低资源分。 ===========================...非扫描文字版,无限清晰且方便检索与拷贝内容!

    《HTML5开发精要与实例详解》配套源码

    此为《HTML5开发精要与实例详解》的全部配套源码 本书由资深Web开发专家亲自执笔,内容的权威性上应该是毋庸置疑的。 本书在内容结构上将继承《HTML 5与CSS 3权威指南》一书的优点,几乎每个知识点都将配一个精心...

    Ajax之XMLHttpRequest详解

    #### 四、关键方法与属性详解 XMLHttpRequest对象提供了多个方法和属性来控制请求与响应的流程。 1. **`open()`方法**: - 用途:初始化一个到服务器的新请求。 - 参数: - 第一个参数:请求类型(GET, POST等...

    TCPIP详解--共三卷

    TCP/IP详解 卷1:协议 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 ...

    《MATLAB图像与视频处理实用案例详解》代码

    《MATLAB图像与视频处理实用案例详解》代码 MATLAB是一种强大的编程环境,尤其在科学计算、数据分析和工程应用领域有着广泛的应用。本资源提供的代码是针对图像与视频处理的实用案例,旨在帮助用户深入理解和掌握...

    python中is与双等于号“==”的区别示例详解

    前言 在开始本文之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。...

    详解pandas.DataFrame.plot() 画图函数

    首先看官网的DataFrame.plot( )函数 DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None,figsize=None, use_index=True, title=None, grid=None, ...

    maven基本命令详解

    ### Maven基本命令详解 Maven 是一款非常强大的 Java 项目构建工具,它通过一系列的预定义生命周期和插件,简化了项目的构建、依赖管理和部署等工作。本文将对 Maven 的一些常用基本命令进行详细介绍。 #### 1. ...

    .Net Framework 3.5开发技术详解

    .Net Framework 3.5开发技术详解高清完整扫描版。 ================================================ 内容简介 本书全面讲解了.NET Framework 3.5开发中各方面的技术要点,共分19章。本书没有对各个功能的工作原理...

    Struts2配置详解

    ### Struts2配置详解 #### 一、总览 在深入了解Struts2的配置细节之前,我们先来简要概述一下Struts2框架的核心特点及其配置文件的基本结构。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web...

    spring所有配置文件详解

    ### Spring配置文件详解 #### 一、引言 在Java Web开发领域,Spring框架因其强大的功能和灵活性而受到广泛欢迎。对于初学者来说,理解Spring的配置方式是至关重要的第一步。本文将详细介绍Spring中常见的配置文件...

    expdp/impdp命令详解

    Oracle的EXPDP(Export Data Pump)和IMPDP(Import Data Pump)是数据库迁移、备份和恢复过程中的关键工具。这两个命令允许用户高效地导出和导入数据库对象和数据,包括表、视图、索引、存储过程等。...

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

    3. **高级类型与基础类型,以及高级类型之间的比较:** - 当涉及 `Array`, `Object` 等复杂类型时,`==` 和 `===` 的行为开始有所不同。`==` 会尝试通过“引用”或“值”的方式来进行比较,而 `===` 只比较引用...

    expdp impdp 数据库导入导出命令详解

    该选项用于将客户端会话与已经存在的导出作业建立关联。使用时需指定作业名称。 **命令格式**: ```sql EXPDP scott/tiger ATTACH=scott.export_job ``` ##### 2. CONTENT 此选项用于指定要导出的内容类型。 **...

    JAVA冒泡排序算法详解

    ### JAVA冒泡排序算法详解 冒泡排序是一种简单的排序算法,它重复地遍历要排序的元素列表,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行的,直到没有再需要交换的元素,也就是...

    ORACLE-TNS协议分析详解.doc

    ### ORACLE-TNS协议分析详解 #### 一、TNS介绍 TNS(Transparent Network Substrate)协议是Oracle数据库系统中用于实现客户端与服务端之间通信的重要协议之一。该协议支持多种传输方式,包括TCP/IP协议、SSL加密...

Global site tag (gtag.js) - Google Analytics