js == 和 ===

来源:互联网 发布:怎么知道淘宝客跟买家 编辑:程序博客网 时间:2024/05/16 01:25

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

一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。

 

下面分别说明: 
先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 
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的类型不一样 
===用来进行严格的比较判断

ps:再给大家做一题目

复制代码
null instanceof Objectnull === undefinednull == undefinedNaN == NaN0 == "0"true == "20"
复制代码

答案是: false false true false true false,你做对了吗

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 iPad屏幕被磁化怎么办 win10鼠标不反应怎么办 快把游戏打不开怎么办 消防退出现役士兵怎么办 武警退出现役士兵怎么办 c盘空间不够怎么办 解压文件被破坏怎么办 exe被拒绝访问怎么办 游戏文件删除了怎么办? 战地一打不开怎么办 迅雷怎么下载不动怎么办 电脑带不动游戏怎么办 sap wm自动上架怎么办 战地1停止运行怎么办 c9pro检测到潮湿怎么办 战地1卡顿怎么办 战地1停止工作怎么办 大写锁定shift解除怎么办 游戏突然掉帧怎么办 oppo应用商店打不开怎么办 ps4战地1校园网怎么办 战地4延迟高怎么办 红米手机打不开怎么办 台式电脑网页打不开怎么办 电脑网页很多都打不开怎么办 qq发送不了位置怎么办 qq无法找到入口怎么办 玩游戏总是掉怎么办 ipad所有按键失灵怎么办 手机启动器停止运行怎么办 安卓版泰拉瑞亚联机失去连接怎么办 吃鸡安装不了怎么办 obb文件丢失了怎么办 dnf登录闪退怎么办 泰拉瑞亚地图找不到备份怎么办 服务器没远程管理卡怎么办 tplink上不了网怎么办 键盘端口坏了怎么办 小米路由dns错误怎么办 电脑内存性能低怎么办 nas硬盘坏了怎么办