为什么会这样?

为什么会这样?

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

    </head>

    <body>

    <script>

    console.log(isNaN(null));

    console.log(isNaN(undefined));

    

    console.log(parseInt(null));

    console.log(parseInt(undefined));


    

    </script>

    </body>

</html>

既然isNaN()已经判断null是一个数值,那么parseInt()为什么打印出来的null是NaN

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
慕虎7329920 2018-06-28 22:39:04

NaN不就是一个数值类型吗

Miss路 2018-06-20 16:29:32

那换种方式来理解吧。isNaN()在执行的时候,会先将括号里面的内容通过Number()转化成Number类型的数据,然后再返回, undefined通过Number转化之后就是NaN,所以,console.log(Number.isNaN(undefined));就是true。而parseInt(undefined)和Number(undefined)都是转化成整型,所以结果是NaN,NaN也是一种Number类型的数据。

祝学习愉快!

Miss路 2018-06-20 14:31:28

NaN也是一种特殊的Number类型,你可以把NaN当成是1、2、3、……之外的一个数字,如果这样能好理解一点的话,你可以先这么理解。所以结果是这样没有问题。祝学习愉快!

  • 提问者 蟲师 #1
    那undefined了,如果按你的理解,那么 打印undefined的结果又无法理解了,通过isNaN(undefined)打印的是非数值,而parseInt(undefined)则是NaN,而NaN又是一个数值,请解释一下
    2018-06-20 14:45:53
  • 慕虎7329920 回复 提问者 蟲师 #2
    NB 这个叫牛角尖。
    2018-06-28 22:39:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师