JavaScript中=、==、===以及!=、!==的区别与联系

 

在JavaScript中,“=”代表赋值操作;“==”先转换类型再比较,“===”先判断类型,如果不是同一类型直接为false。其中“==”和“===”都可以用在布尔表达式中,但两者有很大的区别,下面对三者进行具体介绍:

一、“=”代表赋值,即将右边的值赋值到左边。

例子:表达式① x=“55”,表示将字符串类型的55赋值给变量x,即变量x也为字符串类型。

表达式② x=55,表示将数值类型的55赋值给变量x,即:变量x也为数值类型

二、 “==”表示先转换类型(自动)再比较。如果两个值相等,肯定相等,如果两个值不等,也可能是相等的,按一下情况进行判断:
1、如果一个是null、一个是undefined,那么相等。
2、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
3、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。

4、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。

注意:对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象。

例子:表达式"1" == true;返回结果为true。

解析:true转成1,再把“1”转成1,进行比较。(“==”会在两个值数据类型不同时,自动转化为同类型进行值比较)

三、 “===”先判断数据类型,(类型不同时,不会自动转换类型)如果不是同一类型直接为false。如果类型相同,再判断其值,如果值也相同则返回true,否则返回false。===表示的是绝对的相等。

1、如果被比较的两个值数据类型不相等则不等。
2、如果被比较的两个值都是数值,并且是同一个值,判定相等。
3、如果被比较的两个值都是字符串,每个位置的字符都一样,那么相等;否则不相等。
4、如果被比较的两个值都是布尔类型的true,或者都是false,那么相等。
5、如果被比较的两个值都引用同一个对象或函数,那么相等;否则不相等。
6、如果两个值都是null,或者都是undefined,那么相等。

例子:假设给定 x=5;

表达式①  x===5 返回结果为 true;

表达式②  x==="5" 返回结果为 false。

解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为true。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“===”表达式不能实现自动转换数据类型,因此返回数据结果为false。

四、!=是“==”的逆反,在不等式两端数据类型不同时,自动转化成相同的数据类型,在进行值比较,如果值相同则返回结果为false,否则为true。

例子:表达式"1" != true;返回结果为false。

解析:对于表达式“!=”,两百年数据类型不相同,会自动将布尔型true转成数值型1,再把字符型“1”转成数值型1,在进行比较,值相同,因此表达式不成立,即返回结果为false。

五、!==是“===”的逆反,当不等式两端的数据类型不相同时,不会自动将两端的数据类型转换成同一数据类型,而是返回结果直接为true,如果数据类型相同,继续比较其值,如果值也相同,则返回false,否则返回true。

例子:假设给定 x=5;

表达式①  x!==5  返回结果为false;

表达式②  x!=="5" 返回结果为 true;

解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为false。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“!==”表达式不能实现自动转换数据类型,因此返回数据结果为true。

JavaScript中=、==、===以及!=、!==的区别与联系的更多相关文章

  1. javascript中&&和||的区别

    javascript中&&和||的区别 &&和||操作符两边不是布尔类型时,系统会转换成布尔类型值再计算(空字符串.null.0都会被转成false),结果本身不变. ...

  2. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  3. JavaScript中‘==’和'==='的区别

    javascript中,两个等号‘==’和三个等号‘===’的区别: 简单说,‘===’比‘==’对相等的概念更为严格,使用‘==’时,数字 1 和 字符串 “1” 是相等的: 而使用‘===’时,数 ...

  4. javascript 中==和===的区别

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

  5. Javascript中“==”与“===”的区别

    在Javascript中有"=="和"==="两种比较运行符,那么他们有什么区别呢? 一.对于string,number等基础类型,==和===是有区别的 1) ...

  6. JavaScript学习总结(五)——Javascript中==和===的区别

    一.JavaScript"=="的作用 当==两边的内容是字符串时,则比较字符串的内容是否相等. 当==两边的内容是数字时,则比较数字的大小是否相等. 当==两边的内容是对象或者是 ...

  7. Javascript中==和===的区别

     一.JavaScript"=="的作用 1.当==两边的内容是字符串时,则比较字符串的内容是否相等. 2.当==两边的内容是数字时,则比较数字的大小是否相等. 3.当==两边的内 ...

  8. JavaScript中===与==的区别

    参考网址:http://zhidao.baidu.com/link?url=RbWnRUHKPBTakwm2-iRfEDicrh4ZSAAeVfq2WvBkvfeLPkU-ZSqZ4chV8LWkCk ...

  9. 《Javascript中 == 和 === 的区别》

    在js中 ==(相等运算符) 和 === (严格运算符)是两种判断两个变量是否相等的运算符. == :判断是否相等,忽略类型进行值的比较.(存在隐式类型转换的比较) ===:判断是否相等,先判断值是否 ...

  10. JavaScript中==和===的区别(面试题目)

    ==用于一般比较,===用于严格比较;==在比较的时候可以转换数据类型,===严格比较,只要类型不匹配就返回flase. 举例说明: "1" == true; //true 类型不 ...

随机推荐

  1. Python 生成器, 迭代器, 可迭代对象的区别

    1.可迭代对象 在python中, 一切皆对象, 但凡是可以用for循环进行遍历取值的对象都可以称之为可迭代对象, 可迭代对象在程序的一个执行周期中,可以无限轮次的进行循环遍历 2.迭代器 a.一个可 ...

  2. 异常处理,约束,MD5加密日志处理

    程序运行过程中产生的错误, 不正常 def chufa(a, b): try: # 尝试执行xxx代码 ret = a/b # 如果这里出现了错误. 异常. 系统内部会产生一个异常对象. 系统会把这个 ...

  3. C# byte array 跟 string 互转

    用 System.Text.Encoding.Default.GetString() 转换时,byte array 中大于 127 的数据转 string 时会出问题. 把这里的 Default 换成 ...

  4. Apache Roller 5.0.3 XXE漏洞分析

    下载5.0.2的版本来分析 5.0.2的war包地址 http://archive.apache.org/dist/roller/roller-5/v5.0.2/bin/roller-weblogge ...

  5. Docker三剑客之Docker Compose

    一.什么是Docker Compose Compose 项目是Docker官方的开源项目,负责实现Docker容器集群的快速编排,开源代码在https://github.com/docker/comp ...

  6. 设置JVM参数的几种方式解决java.lang.OutOfMemoryError:Java heap space

    一.首先给出查询当前JVM内存的代码: 下面是查询当前JVM 内存大小的代码,可以测试设置后JVM 的内存是否会变化.增加JVM 内存的配置项后,无需重新启动eclipse .具体的代码如下: pub ...

  7. ActiveMq使用笔记

    java JMS技术 .1.   什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用 ...

  8. MySQL查询表结构命令

    参考网址:https://www.cnblogs.com/zhangyuhang3/p/6873895.html 一.简单描述表结构,字段类型 desc tabl_name; desc tabl_na ...

  9. 解决 Error: ENOSPC: System limit for number of file watchers reached

    manjaro 18.0 kde版本 运行 yarn test报错 Error: ENOSPC: System limit for number of file watchers reached 解决 ...

  10. 对html中iframe的研究

    虽然平时不怎么用iframe,但经常在网上听一些前辈说iframe怎样怎样,今天索性对iframe来个大研究,那样就不必去记那些条条框框了,自己体验一遍比看什么都好. 创建两个文件一个index.ht ...