首先,== equality 等同,=== identity 恒等。
==, 两边值类型不同的时候,要先进行类型转换,再比较。

==,不做类型转换,类型不同的一定不等。

下面分别说明:

先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等:

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、任何其他组合,都[不相等]。

举例:

"1" == true

  类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。

= 赋值运算符

== 等于

=== 严格等于

例:

var a = 3;

var b = "3";

a==b 返回 true

a===b 返回 false

因为a,b的类型不一样

===用来进行严格的比较判断

最新文章

  1. MySql提示:The server quit without updating PID file(…)失败
  2. Java连接程序数据源
  3. ue4 shooterGame 第一步 搭建git linux服务器
  4. 爱上MVC~为Html.EditorForModel自定义模版
  5. Spring Security授权 AccessDecisionManager
  6. asp.net环境变量
  7. Redhat6.x下如何制作虚拟机快照和镜像封装
  8. javascript常见错误
  9. cocoa pods 安装 转载
  10. 利用base64函数,对文件进行转码加密
  11. Android Stuido 方法参数 p0,p1
  12. junit5了解一下
  13. kmp算法中的nextval实例解释
  14. 为什么要使用MONO
  15. PageAdmin CMS网站建设教程:如何创建及管理栏目?
  16. [转]PowerDesigner 把Comment写到name中 和把name写到Comment中 pd7以后版本可用
  17. golang reflect包使用解析
  18. CentOS7路由、端口和服务排障常用命令
  19. CentOS 7 开放3306端口访问
  20. Http中Get/Post请求区别

热门文章

  1. Python数据结构——栈的链表实现
  2. ISCC的 Web——WP
  3. draw graph
  4. 【BZOJ4553】【TJOI2016】【HEOI2016】序列
  5. tomcat部署项目(war文件)
  6. MySQL Replication--GTID基础
  7. 使用netlify-statuskit 进行系统业务状态报告
  8. Java IO的一些列子
  9. windows删除文件或目录CMD命令
  10. linux之 awk