浅谈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 相关文章推荐
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
javascript下拉框选项单击事件的例子分享
Mar 04 Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
JS限制条件补全问题实例分析
Dec 16 Javascript
jQuery.parseHTML() 函数详解
Jan 09 Javascript
Web纯前端“旭日图”实现元素周期表
Mar 10 Javascript
Angular.JS通过指令操作DOM的方法
May 10 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
Jul 02 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 Javascript
vue2 前端搜索实现示例
Feb 26 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
python实现哈希表
2014/02/07 Python
Python算法之栈(stack)的实现
2014/08/18 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python制作数据导入导出工具
2015/07/31 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
法律七进实施方案
2014/03/15 职场文书
挂职学习心得体会
2014/09/09 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python