浅谈JS中的!=、== 、!==、===的用法和区别


Posted in Javascript onSeptember 24, 2016
var num = 1; 
  
var str = '1'; 
  
var test = 1; 
  
test == num  //true 相同类型 相同值 
  
test === num //true 相同类型 相同值 
  
test !== num //false test与num类型相同,其值也相同, 非运算肯定是false 
  
num == str  //true  把str转换为数字,检查其是否相等。 
  
num != str  //false == 的 非运算 
  
num === str //false 类型不同,直接返回false 
  
num !== str //true  num 与 str类型不同 意味着其两者不等 非运算自然是true啦

== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。

=== 和 !== 只有在相同类型下,才会比较其值。
 
首先,== 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的类型不一样

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

var data = ({"val":"7","flag":"true"});
<FONT face=Verdana></FONT>

下面需要如何判断flag的值?

因为true加双引号==推测是字符串true

如果不加双引号===就是布尔值true

这个很重要,之前我一直没有搞清楚这一点

写法1

if(data.flag=true){…}else{..}

这样写怎么都是正确的,根本得不到else的值,原因是这种写法相当于

if(true){…}

写法2

if(data.flag==true){…}else{..}

没有这种写法

写法3

if(data.flag='true'){…}else{..}

这样写怎么都是正确的,根本得不到else的值,原因是这种写法相当于

if(true){…}

写法4

if(data.flag=='true'){…}else{..}

这个才是正确的写法

“=”:这个表示赋值,不是表示运算符

“==”:表示等于(值)

“===”:表示全等于(类型和值)

以上就是小编为大家带来的浅谈JS中的!=、== 、!==、===的用法和区别的全部内容了,希望对大家有所帮助,多多支持三水点靠木~

Javascript 相关文章推荐
jQuery控制iFrame(实例代码)
Nov 19 Javascript
jquery 实现两级导航菜单附效果图
Mar 07 Javascript
Javascript 高阶函数使用介绍
Jun 15 Javascript
基于javascript实现句子翻牌网页版小游戏
Mar 23 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
基于JavaScript实现随机颜色输入框
Dec 10 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
Angular 组件之间的交互的示例代码
Mar 24 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 Javascript
JS实现分页导航效果
Feb 19 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 #Javascript
浅谈js常用内置方法和对象
Sep 24 #Javascript
js原生跨域_用script标签的简单实现
Sep 24 #Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 #Javascript
用js实现简单算法的实例代码
Sep 24 #Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 #Javascript
AngularJS实现星星等级评分功能
Sep 24 #Javascript
You might like
Syphon 使用方法
2021/03/03 冲泡冲煮
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
详解Django框架中的视图级缓存
2015/07/23 Python
使用python实现kNN分类算法
2019/10/16 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
一名毕业生的自我鉴定
2013/12/04 职场文书
《理想》教学反思
2014/02/17 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
兵马俑的导游词
2015/02/02 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
MySQL中in和exists区别详解
2021/06/03 MySQL
SQL语句多表联合查询的方法示例
2022/04/18 MySQL