null的数据类型

null的数据类型

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>数据类型之NaN</title>
</head>
<body>
    <script>
var a=null;
var b=10;
var c="字符串";
var d="11";
var e=undefined;
document.write(isNaN(a),"<br>");
document.write(isNaN(b),"<br>");
document.write(isNaN(c),"<br>");
document.write(isNaN(d),"<br>");
document.write(isNaN(e),"<br>");
document.write(typeof(a),"<br>");
</script>
</body>
</html>

上面的代码中给a规定的类型是null,打印出来的变量类型是object(据说这是历史遗留bug?),isNaN判断是否是number返回的为什么还是false,false就表示是number类型的,但null和object都不是数值型的呀?

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

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

1回答
程序学习袁 2017-04-21 14:13:12

首先你可以理解null为空对象指针。所以它打印出来的数据类型就是object啦。isNaN判断是否为"非数值",如果他不是数值。就返回true。是数值就返回false。

望采纳

  • 提问者 HyperCoder #1
    我的问题是null和object都不是数值型,为什么会返回false,这才是问题!
    2017-04-21 16:23:55
  • 程序学习袁 回复 提问者 HyperCoder #2
    首先你这个有点混淆了。你是用typeof去判断了a的类型。所以它给你返回了object,所以你拿null去判断的时候就觉得哎呀这个null不是object吗。为什么会返回false呢。这是因为isNaN在判断一个对象是否为非数值的时候。他会先尝试把这个对象转换为数值。你可以看看你输入了"11",这是一个字符串。但是为什么isNaN在判断它的时候会返回false呢。因为它被转换成了数值。所以。当你用isNaN判断null的时候、null会被转换为数值,也就是0,所以就给你返回false了。
    2017-04-21 16:30:04
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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