浅谈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 select下拉框操作的一些说明
Apr 02 Javascript
AeroWindow 基于JQuery的弹出窗口插件
Jun 27 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
IE及IE6浏览器中判断JS文件加载成功失败的方法
Feb 18 Javascript
JavaScript实现表格快速变色效果代码
Aug 19 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
AngularJS中scope的绑定策略实例分析
Oct 30 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 Javascript
深入了解Hybrid App技术的相关知识
Jul 17 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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
PHPMailer发送邮件
2016/12/28 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
javascript与CSS复习(二)
2010/06/29 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
详解Python中find()方法的使用
2015/05/18 Python
python支持多线程的爬虫实例
2019/12/21 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
介绍java中初始化块的使用
2012/09/11 面试题
外企测试工程师面试题
2015/02/01 面试题
优秀生推荐信范文
2013/11/28 职场文书
2013的个人自我评价
2013/12/26 职场文书
护士的自我鉴定
2014/02/07 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
暑假学习心得体会
2014/09/02 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
停电调休通知
2015/04/16 职场文书
元宵节晚会主持词
2015/07/01 职场文书
2015年科普工作总结
2015/07/23 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技