两者都是判断等式两边是否相等,最大的区别就是==会进行类型的转换之后再判断两者是否相等,而===不会进行数据类型的转换,先判断两边的数据类型是否相等,如果数据类型相等的话才会进行接下来的判断,再进行等式两边值得判断,可以理解为只有等式两边是全等(数据类型相同,值相同)的时候结果才会是true,否则全为false。

==判断等式两边是否相等的情况:

(1)null、undefined和不同类型比较,都是false(null和undefined结果为true)

(2)NaN和任何数据进行比较,都是false(包括NaN和NaN相比较也为false)

(3)布尔值是转换为数字1或0再和其他数据进行比较

拓展:   不同数据转换成布尔值的结果:

        console.log(Boolean(''));       //falseconsole.log(Boolean({}));       //trueconsole.log(Boolean([]));       //trueconsole.log(Boolean(null));     //falseconsole.log(Boolean(undefined)); //falseconsole.log(Boolean(NaN));      //falseconsole.log(Boolean(Object));   //true

(4)数字和其他简单数据类型进行比较时,会尝试将其他数据类型转换成数值型再进行比较

**其他数据类型默认转数字使用的是Number()

        console.log(""==false);     //trueconsole.log(parseInt(""));   //NaNconsole.log(Number(""));   //0console.log(""==0);         //true

(5)对象和其他简单数据类型进行比较的时候,会尝试使用对象的valueOf()和toString()方法将对象转换为原始值进行比较:

①对象.toString()返回值只有[ object Object ]

        let obj = {name:'leon',age:18};console.log(obj.toString());    //[object Object]console.log(obj.valueOf());     //{name: 'leon', age: 18}
        let obj = {};console.log(obj.toString());    //[object Object]console.log(obj.valueOf());     //{}

②数组  [ ].toString()返回值是空  其他数组.toString()返回值是字符 ,一个成员一个字符逗号分隔

        let arr1=[1,2,3];console.log(arr1.toString());    //1,2,3console.log(arr1.valueOf());     //[1, 2, 3]let arr=[];       console.log(arr.toString());    //空console.log(arr.valueOf());     //[]

③其他的对象function  reg  返回字符串

        function fn(){console.log("你是最棒的!");}console.log(fn.toString());    console.log(fn.valueOf());   let reg = /^[^_$]\w{5,}@(163|126|qq|sina)\.(com|cn|net)$/;console.log(reg.toString());    console.log(reg.valueOf());  

运行结果截图:

(6)两者同为引用类型时,必须是指向同一个引用地址才相等,否则不相等

(7)-0 == +0   结果为:true

全等比较(===)不转换数据类型,数据类型和内容必须完全一致才是相等

全等比较(===)两边是否相等的情况:

(1)类型不同,一定不相等

(2)两个同为数值,并且相等,则相等;若其中一个为NaN,一定不相等

(3)两个都为字符串,每个位置的字符都一样,则相等

(4)两个同为true,或是false,则相等

(5)两个值都引用同一个对象或函数,则相等,否则不相等(引用类型地址空间可能不一样)

(6)两个值都为null,或undefined,则相等

(7*)两者同为引用类型时,必须是指向同一个引用地址才相等,否则不相等(5的补充)

(8)-0 === +0   结果为:true

==与===的区别(JS)相关推荐

  1. slice 和splice 的区别 js

    slice 和splice 的区别js slice 定义和用法 一个参数 正数 负数 两位参数 正数 负数 splice 定义和用法 两个参数 正数 负数 单一个参数 正数 负数 今天写一道算法题时候 ...

  2. 几种location.href的区别 js实现网页防止被iframe框架嵌套功能 .

    首先我们了解一下:window.location.href.location.href.self.location.href.parent.location.href.top.location.hre ...

  3. html中单引号与双引号区别,JS 和 HTML 中的单引号与双引号

    JS中的单引号与双引号 HTML中的单引号与双引号很简单,就是两个字符实体: 显示 描述 实体名称 实体编号 " 双引号.引号 " " ' 单引号.撇号 ' ' x 1 ...

  4. HTML中id和name的区别(js中的注意事项)

    但是name在以下用途是不能替代的: 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.因为有许多name会同时对应多个控件,比如checkbox和radio,而id必须是全文档 ...

  5. 区别js中的3/2(结果1.5))与 java 中的 2/3(结果:0)

    前言: 为了调试方便,昨天把一段js代码转成java代码,发现一些问题. ------------------------ js中定义变量都到var 而java中分int long double等等 ...

  6. php数组和链表的区别,js里链表和数组的对比

    1.链表是什么 链表是一种上一个元素的引用指向下一个元素的存储结构,链表通过指针来连接元素与元素: 链表是线性表的一种,所谓的线性表包含顺序线性表和链表,顺序线性表是用数组实现的,在内存中有顺序排列, ...

  7. js实现网页防止被iframe框架嵌套及几种location.href的区别

    首先我们了解一下几种location.href的区别简单的说:几种location.href的区别js实现网页被iframe框架功能,感兴趣的朋友可以了解下 首先我们了解一下:window.locat ...

  8. day05【JQuery框架】HTML引入Jquery、jQuery与JS区别、基本选择器、层级关系选择器、属性选择器、过滤选择器、 对象遍历、Jquery的DOM操作【重点】、Jquery事件绑定

    回顾 1. bom对象window对象三种弹框alert()confirm()prompt()二种定时器一次性:setTimout() --- 通过递归实现循环性循环性:setInterval()lo ...

  9. JS有哪些数据类型?它的特点和区别。栈和堆的是什么?数据类型之间的转换

    大家好,我是IT修真院武汉分院web第17期的学员吴三水,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网js(职业)任务一,深度思考中的知识点--JS有哪些数据类型? 1.背景介绍 J ...

  10. JS中同步和异步的区别

    JS中同步和异步的区别 js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推.如果一个任务耗 ...

最新文章

  1. python数据类型详解
  2. Rsync+inotify搭建使用
  3. Imageloader5-ImageLoader的变量初始化
  4. 波卡链Substrate (6)Babe协议三“slot leader”
  5. windows下cmake编译VTK到PCL中
  6. php 安全基础 第七章 验证与授权 密码嗅探
  7. 【ArcGIS微课1000例】0018:ArcGIS设置相对路径和数据源
  8. ajax官方api,yangguozhong
  9. netty发送对象消息
  10. 从分库分表到Database Plus,重新认知ShardingSphere
  11. 使用LogParser分析IIS网站日志
  12. idea自动导包_IDEA已经世界第一了,听说你还不会?
  13. mysql数据库中的分组查询语句_详解MySQL中的分组查询与连接查询语句
  14. mac安装教程 sqlyog_Mac开发环境配置:Homebrew的安装
  15. 曲面映射的算法理论基础
  16. ubuntu系统打开.chm文件方式
  17. Java高级技术FastDFS的学习
  18. 收发器(Transceiver)架构4——发信机1
  19. fiddler移动端抓取
  20. WINCE快捷方式结构

热门文章

  1. [游戏分析] 游戏逆向
  2. Tesla+Quadro大一统:NVIDIA发布Maximus
  3. 字符串的常用拼接方法
  4. soapUI 5.7.0使用
  5. 使用google身份验证器实现动态口令验证
  6. 数据质量管理(DQM)
  7. 在R软件中,提取时间数据中的小时数
  8. etcd问题踩坑cluster ID mismatch
  9. 基于贝叶斯方法的英文单词模糊自动校对技术及其应用研究
  10. 高等数学 多元函数微分学 知识技巧思维导图 [21考研上岸之旅]