文章导航

JavaScript != 不相等运算符

2019-4-14 23:10| 作者: admin| 查看: 233| 评论: 0|来自: 蚂蚁部落

不相等运算符与相等运算符(==)是相对的。

关于相等运算符可以参阅JavaScript == 等号运算符一章节。

只要理解了相等运算符,那么也就等同于理解了不相等运算符。

为了便于理解,本文再通过代码实例详细介绍一下不相等运算符的用法。

一.运算符分析:

当运算符两侧的运算数不相等时,表达式返回true,否则返回false。

关键问题来了,运算数怎么样算是不相等,在普通观念中,只要两侧的数据不同即是不相等。

然而在JavaScript中行不通,因为可能会涉及到数据类型转换问题,首先看一段代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
let a=1;
let b="1";
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231126faqjdh6h5k52qjnl.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

最终表达式打印结果为false,说明两个操作数相同。

但是从字面上看很明显是不相同的,一个数值类型,一个是字符串类型。

但是在比较之前,会首先进行数据类型转换,尝试将字符串类型转换成数值类型。

关于数据类型转换更多内容可以参阅JavaScript 数据类型转换一章节。

与不相等运算符类似的是JavaScript !== 不全等运算符,但是不全等运算符不会进行数据类型转换。

二.比较规则如下:

前文提到过,此运算符在进行比较之前,如果两侧运算数数据类型不同,则首先尝试进行数据类型转换。

也就是说,比较需要遵循一定的规则,简单总结如下:

(1).如果有运算数是布尔值,那么首先将其转换为数值,再进行比较,true转换为1,false转换为0。

(2).如果运算数一个是数值类型,一个是字符串类型,首先尝试将字符串转换为数值类型。

(3).如果运算数一个是对象,另一个数字,那么首先尝试将对象转换为数字。

(4).如果运算数一个是对象,另一个字符串,那么首先尝试将对象转换为字符串。

(5).如果运算数是两个不同的对象,那么返回值一定是true。

(6).null与undefined比较返回值是false。

(7).如果有一个运算数是NaN,那么返回值一定是true。

三.代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
let a=true;
let b="1";
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231223yhhtjgyt40n9fhhc.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

打印结果为false,说明两个运算数相同,代码分析如下:

(1).首先布尔值转换为数字1,字符串"1"转换为数字1。

(2).然后再进行比较,所以打印结果为false。

[JavaScript] 纯文本查看 复制代码运行代码
let a={};
let b={};
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231254fvm7boqybjfqa99c.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述代码可能对初学者有一定的迷惑,明明两个一模一样的对象。

应该是相同了,为什么打印结果还是true呢,这是因为对象是引用类型数据。

引用类型数据比较的是引用类型数据的存储地址,两个对象很明显在不同的位置存储。

关于引用类型与值类型可以参阅JavaScript值类型和引用类型一章节。

[JavaScript] 纯文本查看 复制代码运行代码
let a=undefined;
let b=null;
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231338g4vuqtvwuuz5adux.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

打印结果为false,这一点要注意一下。

[JavaScript] 纯文本查看 复制代码运行代码
let a=NaN;
let b=NaN;
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231408roxzb0bob8t3tdb8.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

NaN是一个比较特殊的情况,它与任何值都不相等,包括它自己。

算是比较狠的一个角色,所以上述打印结果为true,这一个也需要特别注意一下。

[JavaScript] 纯文本查看 复制代码运行代码
let a=["蚂蚁部落"];
let b="蚂蚁部落";
console.log(a != b);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201904/14/231433uo3wz6w24ek4ebf3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

a是一个数组对象,b为字符串,那么两个数据进行比较的时候。

首先尝试将数组对象转换为字符串,["蚂蚁部落"]转换为字符串为"蚂蚁部落"。

最终上述代码的打印结果为false,如果一个操作数是对象,另一个是数字,那么首先将对象转换为数字。

上面对此运算符进行了简单实例演示,如果对本文有任何意见或者建议,可以在底部留言。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部