如何在JavaScript中使用相等运算符(javascript,web开发)

时间:2024-05-04 04:20:48 作者 : 石家庄SEO 分类 : web开发
  • TAG :

    %E5%A6%82%E4%BD%95%E5%9C%A8JavaScript%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9B%B8%E7%AD%89%E8%BF%90%E7%AE%97%E7%AC%A6

1. 操作数类型不同

对比结果是false

2.同一类原始类型值

如果两个值都是原始类型值(数字、字符串、布尔值),值相同就返回true,值不同就返回false。

对于原始类型值,要注意的是,0和-0是相等的;如果两个值是字符串,需要它们在16位编码的相同位置上有相同的值才是相等。如果是不同的16位编码序列,就算有相同的内容,相同的长度,结果也是不相等。

3.同是对象

如果两个值是对象(数组、函数、对象、Symbol),对于两个对象比较的是引用,如果引用指向的是不同的对象,则结果是不相等。

4. null和undefined

如果两个值都是null或者都是undefined,结果是true

5.NaN

如果两个值都是NaN,结果是false

NaN和任何数字都不相等,包括它自身

相等运算符

1. 值的类型相同

应用严格相等运算符转换规则的值类型相同规则(除:操作数类型不同)。

2.不同原始类型值

如果是不同原始类型值(数字、字符串、布尔值)进行比较,将非数字类型转换成数字,再进行比较。

3. 对象和原始类型值

如果其中一个操作数是对象,另外一个是原始类型值(数字、字符串、布尔值),按如下规则转:

将对象转换成原始类型值

转换后的原始类型值与另一个操作数的类型一样,使用值类型相同的规则

如果不一样,将非数字类型转换成数字再进行比较。

例1:对象对比数字

解析:

a. [1]先转换成原始值"1";

b. 转换后与右边的操作数1类型不一样,将"1"转换成1;

c. 1 == 1 结果是true

例2:对象对比字符串

解析:

a. [1]先转换成原始值"1";

b. 转换后与右边的操作数"1"类型一样,"1"=="1",结果是true;

例3:对象对比布尔值

解析:

a. [1]先转换成原始值"1";

b. 转换后与右边的操作数true类型不一样,将右边的操作数true转换成1;

c. 1 == 1结果是true

4. null和undefined

如果其中一个值是null,另外一个是undefined,结果是相等

对象转换为原始类型规则

比较操作符的操作数可能是任意类型,然而只有数字和字符串才能真正执行比较操作,因此那些不是数字和字符串的类型都将进行类型转换。转换的规则如下:

如果对象类型是Date,会调用该对象的toString();

其他情况下,如果valueOf()返回的是原始类型,会调用对象的valueOf();

其他情况下(如果valueOf()不存在或没有返回原始类型),会调用toString()方法,大部分情况下是用的这种转换。

如果没有toString()方法,则抛出一个类型异常错误

上面的规则只是应用于+、==、!=中涉及到的对象转为原始类型的转换规则,如果是> ,< 等其他运算符涉及的转换,转换规则中除去日期对象的特殊情况,其他是一样的,也就是说规则是下面这样的:

其他情况下,如果valueOf()返回的是原始类型,会调用对象的valueOf();

其他情况下(如果valueOf()不存在或没有返回原始类型),会调用toString()方法,大部分情况下是用的这种转换。

如果没有toString()方法,则抛出一个类型异常错误

本文:如何在JavaScript中使用相等运算符的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:python保留两位小数的方法有哪些下一篇:

19 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18