Js 中 三个等号(===) 和两个等号(==)的区别

简单来说就是使用“==”时,如果两边类型不同,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);  //ture
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。

js 中的三个等号相关推荐

  1. Js中的三个点(...)是什么

    Js中的三个点(-)是什么 我们在看js代码时经常会出现(-)三个点的东西,它究竟是什么意思?又有何用处? 下面我就给大家分享一下三个点的那些事 什么意思? 三个点(-)真名叫扩展运算符,是在ES6中 ...

  2. java中m三个等号是什么意思_三个等号是什么意思

    问题一:数学 3个横杠的等号表示什么意思?恒等或同余号(≡) 问题二:javascript中三个等号"==="是什么意思9527 == 9527 //返回true 9527 === ...

  3. JS中出现三个点(...)的作用是什么

    三个点(...)真名叫扩展运算符,是在ES6中新增加的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开:还可以在构造字面量对象时将对象表达式按照key-value的方式展 ...

  4. js中的“...”三个点

    在函数形参里面出现,表示的是可变参数,即表示的传入的参数个数是可变. 传入多少个参数都被放到一个数组里. function demo (...values) {console.log(values); ...

  5. js中比较三个数字的大小

    function getMax(num1,num2,num3){   var max = num1;//假设num1是最大的   //比较num1和num2,产生一个最大值max   if(num1& ...

  6. WPS中三个等号产生的横线的消除

    [问题描述] WPS中输入三个等号然后回车就可以可以产生一条直线,那么如果不想要那条直线了该怎么样删除它呢~ [解决方法] 1, 如果是刚生成的还未保存,此时直接退格键即可: 2,如果是保存之后重新编 ...

  7. html中的三种弹窗

    一.js中的三种弹窗 ** alert() confirm() prompt ** alert() 警示对话框 – alert是js中的window对象的一种方法 – 只包含一个确认按钮 – 返回值类 ...

  8. js两个等号和三个等号_js中两个等号(==)和三个等号(===)的区别

    js中两个等号(==)和三个等号(===)的区别: 1. "=="表示:equality -> 等同 的意思,"=="使用两个等号时,如果两边值的类型不同 ...

  9. JS/JavaScript中两个等号 == 和 三个等号 === 的区别

    JavaScript中两个等号 == 和 三个等号 === 的区别 一.概念 == 和 ===  (1)  "=="叫做相等运算符,"==="叫做严格运算符. ...

最新文章

  1. 与计算机硬件相关的英语作文,计算机和计算硬件,computer and computing hardware,音标,读音,翻译,英文例句,英语词典...
  2. 解决paramiko获取远程脚本延时返回数据的问题
  3. IdentityServer4 知多少
  4. java面试题001
  5. Spring MVC:表单处理卷。 4 –单选按钮
  6. Win7电脑定时关机怎么设置
  7. 在用c语言写代码是这么找出错误,写代码(C语言)常见粗心小错误
  8. 合并百度影音的离线数据 with python 第二版 基于yield
  9. (转)淘淘商城系列——内容分类管理
  10. SQLite(3) Windows安装小结
  11. 计算机公式求所占百分比,如何使用Excel函数计算所占的比例
  12. 30分钟教你写出10分的淘宝标题
  13. 0x00a1bdb3 指令引用的 0x00000001 内存。该内存不能为 read。
  14. 《增长黑客》的背后逻辑是什么?(上)
  15. 代码写一半感觉无从下手,写不下去了,怎么办?
  16. 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第四周作业(12)
  17. 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章
  18. 钉钉企业内部机器人开发——绑定群聊信息到机器人
  19. 怎么在自己电脑上搭建一个服务器,以便于外网访问呢?
  20. 计算机毕业设计Java钢材商贸公司网络购销管理系统(源码+系统+mysql数据库+lW文档)

热门文章

  1. 05【投资】成为富人的三个秘密
  2. 广域网技术——SRv6隧道类型及数据转发
  3. 5g上行速率怎么提升_5G手机到底牛逼在哪里?(SRS轮发)
  4. 没有基础但想学手绘设计,可以么?
  5. 19.使用fadeTo()方法设置淡入淡出效果的不透明度
  6. ORB-SLAM2——Trackin线程
  7. 计算机毕业设计和毕业论文
  8. ORM之ForeignKey操作
  9. 信息学奥赛一本通-1049:晶晶赴约会
  10. ALU——调用加法乘法模块