js小总结—JavaScript中=、==、===以及!=、!==的区别与联系

JavaScript中=、==、===以及!=、!==的区别与联系


在JavaScript中,“=”代表赋值操作;“==”先转换类型再比较,“===”先判断类型,如果不是同一类型直接为false。其中“==”和“===”都可以用在布尔表达式中,但两者有很大的区别,下面对三者进行具体介绍:

一、“=”代表赋值,即将右边的值赋值到左边。

例子:表达式① x=“55”,表示将字符串类型的55赋值给变量x,即变量x也为字符串类型。

表达式② x=55,表示将数值类型的55赋值给变量x,即:变量x也为数值类型

二、 “==”表示先转换类型(自动)再比较。如果两个值相等,肯定相等,如果两个值不等,也可能是相等的,按一下情况进行判断:
1、如果一个是null、一个是undefined,那么相等。
2、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
3、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。

4、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。

注意:对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象。

例子:表达式"1" == true;返回结果为true。

解析:true转成1,再把“1”转成1,进行比较。(“==”会在两个值数据类型不同时,自动转化为同类型进行值比较)

三、 “===”先判断数据类型,(类型不同时,不会自动转换类型)如果不是同一类型直接为false。如果类型相同,再判断其值,如果值也相同则返回true,否则返回false。===表示的是绝对的相等。

1、如果被比较的两个值数据类型不相等则不等。
2、如果被比较的两个值都是数值,并且是同一个值,判定相等。
3、如果被比较的两个值都是字符串,每个位置的字符都一样,那么相等;否则不相等。
4、如果被比较的两个值都是布尔类型的true,或者都是false,那么相等。
5、如果被比较的两个值都引用同一个对象或函数,那么相等;否则不相等。
6、如果两个值都是null,或者都是undefined,那么相等。

例子:假设给定 x=5;

表达式①  x===5 返回结果为 true;

表达式②  x==="5" 返回结果为 false。

解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为true。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“===”表达式不能实现自动转换数据类型,因此返回数据结果为false。

四、!=是“==”的逆反,在不等式两端数据类型不同时,自动转化成相同的数据类型,在进行值比较,如果值相同则返回结果为false,否则为true。

例子:表达式"1" != true;返回结果为false。

解析:对于表达式“!=”,两百年数据类型不相同,会自动将布尔型true转成数值型1,再把字符型“1”转成数值型1,在进行比较,值相同,因此表达式不成立,即返回结果为false。

五、!==是“===”的逆反,当不等式两端的数据类型不相同时,不会自动将两端的数据类型转换成同一数据类型,而是返回结果直接为true,如果数据类型相同,继续比较其值,如果值也相同,则返回false,否则返回true。

例子:假设给定 x=5;

表达式①  x!==5  返回结果为false;

表达式②  x!=="5" 返回结果为 true;

解析:针对给定表达式x=5知,将数值5赋值给变量x,即:变量x为数值类型变量。因此,对于表达式①,等号两端数据类型均为数值类型,类型相同,再比较数值,均为5,因此值与类型均相同,所以返回结果为false。而对于表达式②来说,等号坐标变量x数据类型为数值型,等号右端变量数据类型为字符串类型,二者数据类型不相同,由于“!==”表达式不能实现自动转换数据类型,因此返回数据结果为true。