ECMAScript中的等性运算符有什么用
admin
2023-01-21 10:23:17
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 -> 值和类型都一样

相关内容

热门资讯

台防务部门呼吁通过所谓无人机条... 7月22日上午,国台办举行例行新闻发布会。记者:据报道,台防务部门负责人近日称,呼吁通过行政部门无人...
英媒:为什么世界更相信中国而不... 当下西方世界深陷信任危机,民众对体制普遍失望愤怒。美国全球公信力持续崩塌,多国对华信任度已反超美国。...
“台青e家”平台上线运行,国台... 7月22日,国务院台办举行例行新闻发布会。有记者问:在海峡两岸青年文化月活动期间,国务院台办主任宋涛...
视频丨从“有学上”到“上好学”... 教育强国,基点在基础教育。我国拥有43万所中小学幼儿园、2.2亿在校生、1577万专任教师,建成了世...
“看到这几张脸生理性厌恶!”你... 近期,“对AI脸感到不适”相关话题接连冲上社交平台热搜。打开短视频平台刷微短剧,连续刷几部后,主角个...
今年上半年全国城镇新增就业69... 今天(22日)上午,人力资源社会保障部举行新闻发布会。今年上半年,全国城镇新增就业695万人,同比持...
委内瑞拉强震遇难人数升至534... 当地时间21日,委内瑞拉全国代表大会主席豪尔赫·罗德里格斯通过社交媒体通报,该国6月24日两次强震造...
高考684分花3000元咨询进... 潮新闻客户端 青年特约评论员 曾耀湘图源:视觉中国近日,据齐鲁晚报报道,河北一名2018级考生,因“...
郑州2死2伤火灾系人为纵火 郑州市公安局金水分局对外发布案件通报。通报显示,6月19日21时,郑州市金水区宏明路与柳林路东南角宏...
29岁成都小伙旅行中改道广西救... 7月14日,自发赶往广西救灾的志愿者党鑫蕊,由于劳累过度导致心功能衰竭,在贵港市覃塘区不幸离世,年仅...