浅谈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 相关文章推荐
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
May 07 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
基于dom编程中 动态创建与删除元素的使用
Apr 17 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
js实现带三角符的手风琴效果
Mar 01 Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 Javascript
浅谈Vue数据响应
Nov 05 Javascript
vue将后台数据时间戳转换成日期格式
Jul 31 Javascript
使用原生javascript开发计算器实例代码
Feb 21 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
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
详解php与ethereum客户端交互
2018/04/28 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
玩转方法:call和apply
2014/05/08 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
Vue实现剪贴板复制功能
2019/12/31 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python爬虫使用cookie登录详解
2017/12/27 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
Python中SQLite如何使用
2020/05/27 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
个人思想政治总结
2015/03/05 职场文书
入党转正介绍人意见
2015/06/03 职场文书
高中班长竞选稿
2015/11/20 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫
golang操作rocketmq的示例代码
2022/04/06 Golang
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js