浅谈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 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
javascript中字符串拼接需注意的问题
Jul 13 Javascript
range 标准化之获取
Aug 28 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
Jun 01 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 Javascript
javascript与PHP动态往类中添加方法对比
Mar 21 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 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_MySQL教程-第一天
2007/03/18 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
jquery checkbox实现单选小例
2013/11/27 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
node上的redis调用优化示例详解
2018/10/30 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
JavaScript实现点击切换功能
2021/01/27 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
python读写csv文件的方法
2019/08/13 Python
基于python实现从尾到头打印链表
2019/11/02 Python
python求前n个阶乘的和实例
2020/04/02 Python
Python流程控制语句的深入讲解
2020/06/15 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
秋季运动会表扬稿
2014/01/16 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2015年党性分析材料
2014/12/19 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
客户经理岗位职责大全
2015/04/09 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang