文档章节

ECMAScript运算符之《等性运算符》

 专注的阿熊
发布于 09/23 16:58
字数 1285
阅读 8
收藏 0

等性运算符一般用在判断两个变量是否相等的运算。在处理原始值时,这种运算相当简单,涉及对象,任务就稍有点复杂。

性运算符分:

1、等号和非等号用于处理原始值

2、全等号和非全等号用于处理对象

一、等号和非等号(比较值)
在 ECMAScript 中,

1、等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。

2、非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

执行类型转换的规则如下:

1、如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1

2、如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字

3、如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串

4、如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字

来点栗子说事儿:

一、如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1

console.log(false == 0);//true
console.log(true == 1);//true
console.log(false == 1);//false
console.log(true == 0);//false
console.log(false != 0);//false
console.log(true != 1);//false
console.log(false != 1);//true
console.log(true != 0);//true

二、如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字

console.log("12" == 12);//true
console.log("12" != 12);//false

三、如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串

var obj = ['a']
var str = "a"
console.log(obj.toString());//a -> 转换为字符串之后变成a
console.log(obj == str);//true
console.log(obj != str);//fasle

四、如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字

var obj = ['12']
var Num = 12;
console.log(Number(obj));//12 -> 转换为数字之后变成12
console.log(obj == Num);//true

在比较时,该运算符还遵守下列规则:

1、值 null 和 undefined 相等

2、在检查相等性时,不能把 null 和 undefined 转换成其他值

3、如果某个运算数是 NaN,等号将返回 false,非等号将返回 true

4、如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等

我们的好朋友,栗子同志来了:

一、值 null 和 undefined 相等

var a = '';
console.log(a.innerHTML);//undefined
console.log(null == a.innerHTML);//true
console.log(null != a.innerHTML);//fasle

二、在检查相等性时,不能把 null 和 undefined 转换成其他值

这个就理解字面意思就行了,我不知道怎么给你们找例子了,CGL对不起大家了。

三、如果某个运算数是 NaN,等号将返回 false,非等号将返回 true

console.log(NaN == null);//false
console.log(NaN == undefined);//false
console.log(NaN == NaN);//false
console.log(NaN == 0);//false
console.log(NaN != 0);//true

四、如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等

例子有点不切当,大家将就看看吧,大概意思是这样的。

var fn1 = function(){console.log('我是fn1')};
var fn2 = fn1
var fn3 = function(){fn1()}function(){ //跟单:www.gendan5.com

fn1()
fn2()
fn3()
console.log(fn1 == fn2);
console.log(fn2 == fn3);

var fn4 = [1,2,3];
var fn5 = [1,2,3];
console.log(fn4 == fn5);

二、全等号和非全等号(比较值和类型)
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

1、全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

2、非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。

var num1 = 30;
var num2 = 30;
var str = "30";

console.log(num1 === num2);//true -> 值一样,类型都是数字
console.log(num1 === str);//false -> 值一样,类型是数字和字符串
console.log(NaN === NaN);//false -> 直接false,硬记
console.log(num1 != str);//false -> 类型不一样,但是值一样
console.log(NaN != NaN);//true -> 直接true,硬记
console.log(NaN !== NaN);//true -> 直接true,硬记
console.log(num1 !== num2);//false -> 值和类型都一样

其他的看《等号和非等号》就可以。

© 著作权归作者所有

粉丝 1
博文 68
码字总数 81277
作品 0
长沙
私信 提问
JavaScript与ECMAScript

详见:http://balan.iteye.com/blog/189064 ECMAScript 的内容 ECMAScript 并不与任何具体浏览器等宿主环境绑定,它关注的是为各种宿主环境提供核心的脚本编程能力。常见的宿主环境有浏览器、...

秋风醉了
2014/05/29
0
0
ECMAScript 与 JavaScript的联系

这两天再看javascript高级教程:http://www.w3school.com.cn/js/pro_js_implement.asp 这里面讲了ECMAScript与javascript的关系,看了之后理解的还是不太清楚。 有几个问题想请教大家 1,ECM...

刘-冬-冬
2012/10/09
15.6K
9
详细介绍ECMAScript基础

网上有无数的文章说明如何用JavaScript实现“傻瓜式的Web小把戏”,它们包括如何弹出用户提示信息、交换图片以及创建简单的游戏等。虽然这些功能给Web站点增加了趣味性,不过只是复制粘贴其代...

kamist
2011/09/07
208
0
JavaScript的位运算符

重温整数 ECMAScript整数有两种类型,有符号整数(允许用正数和负数)和无符号整数(只允许用正数)。在ECMAScript中,所有整数字面量默认都是有符号整数。 有符号整数,数值范围从-21474836...

前端届的科比
2014/08/16
1K
0
一文读懂JavaScript和ECMAScript的区别

一文读懂JavaScript和ECMAScript的区别 这篇文章代表了我目前对 JavaScript 和 ECMAScript 之间差异的理解。文章适合那些熟悉 JavaScript 但又想更加清楚地了解其与 ECMAScript、web 浏览器、...

城市之雾
2018/12/05
29
0

没有更多内容

加载失败,请刷新页面

加载更多

vue 2打包注意点

使用npm run build打包之后往往直接本地运行,路径类似这样:http://127.0.0.1:5500/xa/dist/index.html 或者http://127.0.0.1:5500/dist/index.html。然后页面打开是空白的,打开控制台查看...

牧云橙
23分钟前
4
0
归并排序

1.原理图 2.代码 public static void merge(int []a,int left,int mid,int right){ int []tmp=new int[a.length];//辅助数组 int p1=left,p2=mid+1,k=left;//p1、p2是检测......

wen123
27分钟前
4
0
css实现透明的两种方法

一、opacity:0~1 值越高,透明度越低: div{opacity:0.5 } 选择器匹配到的节点们,包括节点们的孩子节点,都会实现%50透明,另 0.5 可直接写成 .5 二、rgba(0~255,0~255,0~255,0~1) r...

Bing309
30分钟前
4
0
Tomcat 配置访问路径

此处只是部署完成后idea打开的默认路径,并非项目部署路径, 此处才是项目实际部署路径,可以有多个项目部署路径,idea可以配置默认打开一个

Aeroever
32分钟前
4
0
将ApiBoot Logging采集的日志上报到Admin

通过ApiBoot Logging可以将每一条请求的详细信息获取到,在分布式部署方式中,一个请求可能会经过多个服务,如果是每个服务都独立保存请求日志信息,我们没有办法做到统一的控制,而且还会存...

恒宇少年
33分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部