浅谈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 相关文章推荐
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
javascript 实现map集合
Apr 03 Javascript
JS动态添加iframe的代码
Sep 14 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
React组件之间的通信的实例代码
Jun 27 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 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执行速度全攻略(下)
2006/10/09 PHP
模仿OSO的论坛(二)
2006/10/09 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
简单介绍Python中的JSON模块
2015/04/08 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
求职信模板
2014/05/23 职场文书
法学自荐信
2014/06/20 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
《中华上下五千年》读后感3篇
2019/11/29 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫