惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
美团技术团队
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
博客园_首页
雷峰网
雷峰网
V
V2EX
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
量子位
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
L
LangChain Blog

博客园 - chenping2008

连接远程数据库,得到数据插入本地表中 php复制目录 PHP删除目录 php统计目录大小 js秒数转换天时分秒 JS切换图片 js 游览器log的记录 2个iframe中checkbox联动 JS Clone函数 JS普通递归的改进 JS随机数的产生方法 silverlight树形结构区服选择 Mongodb的一些基本概念 Mongodb在Ubuntu下的安装 redis windows下使用及redis命令 相册功能 Node.js 系列翻译---console Node.js 系列翻译---概要 补充Silverlight中图片显示
JS相等运算符(==)和等同运算符(===)
chenping2008 · 2012-09-07 · via 博客园 - chenping2008

相等运算符(==)和等同运算符(===)
===运算符是等同运算符,它采用严格的同一性定义检测两个运算数是否完全等同。==运算符是相等运算符,它采用比较宽松的同一性定义(即允许进行类型转换)检测两个运算数是否相等。
下面的规则用于判定===运算符比较的两个值是否完全相等:
1.如果两个值的类型不同,它们就不相同。
2.如果两个值的类型是数字,而且值相同,那么除非其中一个或者两个都是NaN(这种情况它们不是等同的),否则他们是等同的。值NaN永远不会与其他的任何值等同,包括它自身。
3.如果两个值都是字符串,而且在串中的同一位置上的字符完全相同,那么它们就完全等同。如果字符串的长度或内容不同,它们就不是等同的。
4.如果两个值都是布尔值true,或者两个值都是布尔值false,那么它们等同。
5.如果两个值引用的是同一个对象,数组或函数,那么它们完全等同。如果它们引用的是不同的对象(数组或函数),它们就不完全等同,即使这两个对象具有完全相同的属性或两个数组具有完全相同的元素。
6.如果两个值都是null或都是undefined,它们完全相同。

下面的规则用于判定==运算符比较的两个值是否相等:
1.如果两个值具有相同的类型,那么就检测它们的等同性。如果这两个值完全相同,它们就相等。如果它们不完全相同,则它们不相等。
2.如果两个值的类型不同,它们仍然可能相等。用下面的规则和类型转换来检测它们的相等性:
   2.1 如果一个值是null,另一个值是undefined,它们相等。
   2.2 如果一个值是数字,另一个值是字符串,把字符串转换为数字,再用转换后的值进行比较。
   2.3 如果一个值是true,将它转换成1,再进行比较。如果一个值为false,把它转换成0,再进行比较。
   2.4 如果一个值是对象,另一个值是数字或者字符串,将对象转换成原始类型的值,再进行比较。
   2.5 其他的数值组合是不相等的。