javascript代码实例教程-js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则

发布时间:2019-01-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 最近一直在笔试面试,经常碰到例如 123==&#39;123'、'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致。现查阅资料后对此进行一些总结。

&nbsp;

等性操作符(==)

 

1、比较的类型是String、Number、Boolean这几个基本类型时

 

当是这几中类型进行比较时,会先将两边转换成数字,在进行比较。

 

复制代码

1 console.LOG(1 == true); // true转换成数字为1,因此结果为true

3 console.log('123' == 123); //true

5 console.log('abc' == true); //'abc'转换成数字为NaN,结果为false,ecmascript规定,NaN与任何值比较都是false,包括NaN==NaN

复制代码

2、上述基本类型与引用类型比较时

 

首先会调用对象的valueOf()方法,期待返回一个基本类型的值(测试为若返回Boolean、Number、String、null、undefined或没有返回值,则将不会继续调用toString方法),若返回的仍然是一个复合对象的话,则调用其toString()方法,若仍然没有返回上述基本类型的话,则直接判为不相等。

 

复制代码

1 VAR obj = {};

2 console.log(obj == '1') //obj.valueOf()返回这个对象,因此接着调用Obj.toString()返回'[object Object]'字符串,按基本类型的比较方式,都转换成数字,发现不相等,因此结果是false

3 //重写obj的toString方法

4 obj.toString() = function(){

5     return 1;

6 }

7 console.log(obj == '1'); //结果就为true了

8 console.log(obj == true); //结果也为true

复制代码

复制代码

 1 var obj = {

 2     valueOf : function(){

 3         console.log('First');

 4     },

 5     toString : function(){

 6         console.log('second');

 7     }

 8 }

 9 console.log(obj == 1); //结果为 first false

10 

11 var obj = {

12     valueOf : function(){

13         console.log('first');

14         return null; //或者return undefined

15     },

16     toString : function(){

17         console.log('second');

18     }

19 }

20 console.log(obj == 1); //结果为 first false

21 

22 var obj = {

23     valueOf : function(){

24         console.log('first');

25         return {}; //或者return其他复合对象

26     },

27     toString : function(){

28         console.log('second');

29     }

30 }

31 console.log(obj == 1); //结果为 first second false

复制代码

 

 

对于undefined和null,ECMAScript规定null==undefined结果为true;在比较等性之前,不能将null和undefined转换成其他值。

 

1 console.log(null == undefined); //true

2 console.log(null == 0); //false

3 console.log(0 == undefined); //false

3、两个对象比较

 

若两个操作数指向同一个对象,则返回true,否则返回false。

 

关系操作符(<,>)

 

1、两边都是字符串

 

都是字符串时,按字符串对应的字符编码比较

 

1 console.log('abc'<'adc') //true

2、有一个操作数是数值

 

若有一个操作数是数值,则将另一个转换为数值进行比较

 

1 console.log('a' > 5); //‘a'转换为数值为NaN,结果为false

2 console.log('2.3' > 1); // true

3、有一个操作数是对象

 

调用该对象的valueOf方法,用返回的结果用前面的规则比较,若没有valueOf方法,则调用toString方法

 

复制代码

 1 var obj = {};

 2 console.log(obj < 5); //false

 3 var obj = {

 4     valueOf: function() {

 5         console.log('first');

 6         return 2;

 7     },

 8     toString: function() {

 9         console.log('second');

10     }

11 }

12 console.log(obj < 5); //first true

复制代码

4、有一个操作数是布尔值

 

将此布尔值转换成数值,再进行比较

 

1 console.log('3' > true); //true

与NaN比较的都将返回false

 

布尔操作符(!)

 

1、操作数是对象

 

任何对象都返回false

 

1 var obj = {};

2 console.log(!obj); //false

2、操作数是字符串

 

空字符串返回true,非空返回false

 

复制代码

1 var a = 'OK';

2 var b = '  ';

3 var c = '';

4 console.log(!a); //false

5 console.log(!b); //false

6 console.log(!c); //true

复制代码

3、操作数是数值

 

0返回true,非0(包括InfinITy)返回false

 

4、操作数是null,undefined,NaN

 

返回true

 

1 console.log(!null); //true

2 console.log(!NaN); //true

3 console.log(!undefined); //true

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则全部内容,希望文章能够帮你解决javascript代码实例教程-js中等性操作符(==)、关系操作符(<,>)和布尔操作符(!)比较规则所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。