持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
前言
作为前端开发工程师,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使用情况
-
无法计算结果时用NaN;非法的数值运算得到的结果
-
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
结束语
希望大家能够喜欢我的文章,我真的很用心在写,也希望通过文章认识更多志同道合的朋友。 最后伙伴们,如果喜欢我的可以给点一个小小的赞👍或者关注➕都是对我最大的支持。