天啦,这么简单的一道面试题竟做错了,0/0应该返回什么?

95 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情

WX20221017-212615@2x.png

前言

作为前端开发工程师,JavaScript是我们主要的开发语言,是每个人必须要掌握的,它是弱类型语言,本身语法也比较简单,最近做了一道题0/0 输出什么? 天啦!我竟然做错了,因此从这一点引发了我的思考。

下面分享了这个比较有意思的问题,希望对大家有所帮助同时欢迎讨论指出问题!

1.0/0输出什么?

0/0 //NAN

0/0输出NAN,这里主要考察的是js的null,undefind,NAN,infinity之间的区别。

2.null

空值;变量的值为空

参与运算时转化为0;比较时被转换成NaN

console.log( 1 + null); //NaN


console.log(null == 0);		//false
console.log(null == 1);		//false
console.log(null == true);	//false
console.log(null == false);	//false

2.1 使用情况

(1)给一个变量或者对象赋值的时候,赋值null,此处不宜赋值为undefined (2)当元素获取不到时,dom返回的也是null (3)原型链的终点,也是返回null的

1.
var parm=null; 
2.
var dom = document.getElementById('domId');//null
3.
Object.getPrototypeOf(Object.prototype);   //null

2.undefind

没有声明或变量声明了但是没有赋值;

参与运算时转化为NaN;比较时被转换成NaN

console.log( 1 + undefined); //NaN
console.log(undefined == 0);		//false

2.1.使用情况

主要有一下几种情况:

(1)声明变量,但未赋值

(2) 函数无返回值,执行后返回undefined

(3) 函数中可选参数,没有传参时返回undefined

(4)对象中不存在或未赋值的属性

1.
let a;
console.log(a)           //undefined


2.var todo=function(){}
console.log(todo());     //undefined
3. 
function todo(i){console.log(i);}
todo();                 //undefined
4. 
var o={};
console.log(o.name);    //undefined

3.NAN

NAN not a number(不是一个数字),是一个数值型的数据,但是不是一个数字,非法的数值运算得到的结果

参与运算时转化为NaN;NaN和任何数值都不相等,包括他自己

console.log(1 + NaN);		//NaN


console.log(NaN == NaN);	//false
console.log(NaN == 0);		//false
console.log(NaN == 1);		//false
console.log(NaN == true);       //false

3.1使用情况

  1. 无法计算结果时用NaN;非法的数值运算得到的结果

  2. NaN 用 typeof(NaN) 后,类型是number ;

0/0        //NAN (分母不能为0,因此不能计算)

4.infinity

一个特殊的无穷大值

Infinity指的是任何超过浮点数上限(1.7976931348623157E+10308)的值

-Infinity则是指超过浮点数下限(-1.7976931348623157E+10308)的值

类型是number

1. 9e99999999999999999999999999999999;       //infinity
2. -9e9999999999999999999999999999999;       //-infinity

结束语

希望大家能够喜欢我的文章,我真的很用心在写,也希望通过文章认识更多志同道合的朋友。 最后伙伴们,如果喜欢我的可以给点一个小小的赞👍或者关注➕都是对我最大的支持。