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 -> 值和类型都一样

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...