undefined null 各种值比较(面试题)皇牌天下投注

来源:http://www.prospettivedarte.com 作者:计算机教程 人气:192 发布时间:2019-05-10
摘要:undefined和null与任何有意义的值比较返回的都是false,但是null与undefined之间互相比较返回的是true。 console.log(null == false); //false console.log(null == true); //false console.log(undefined == false); //false

undefined和null与任何有意义的值比较返回的都是false,但是null与undefined之间互相比较返回的是true。
console.log(null == false); //false
console.log(null == true); //false
console.log(undefined == false); //false
console.log(undefined == true); //false
console.log(undefined === null); //false
console.log(undefined == null); //true
console.log(undefined == undefined); //true
console.log(null == null); //true
console.log(null == 0) //false

最近一直在笔试面试,经常碰到例如 123=='123'、'abc'==true等问题,其中有答对的,也有答错的,主要原因还是对ECMAScript的规范没有理解清楚,很多题目没有具体分析所导致。现查阅资料后对此进行一些总结。

console.log(([])?true:false); //true
console.log(([]==false?true:false)); //true
console.log(({}==false)?true:false) //false

 

console.log(typeof []) //Object
console.log([] == false) //true

等性操作符(==)

 

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、两个对象比较

 

本文由皇牌天下投注网发布于计算机教程,转载请注明出处:undefined null 各种值比较(面试题)皇牌天下投注

关键词:

上一篇:CSS-in-JS,向Web组件化再迈一大步

下一篇:没有了

最火资讯