JavaScript怪异的类型
typeof运算符可以用来检查类型,如:
var car = { model:"baba", color:"red"
};
alert(typeof car);
- 1
- 2
- 3
- 4
- 5
结果是object。
1.undefined
对于任何未初始化的东西,都会将undefined赋给它,undefined的类型是undefined,是不是很怪异。
可以将变量赋为null,如var minicar = null;这个null与undefined是不是有点重复呢?其实,JavaScript刚出来时,认为要用一个值(undefined)表示变量还未初始化,用另一个值(null)表示没有对象可赋给变量。所以,记住它们各自的用途就好。
(1)undefined用于表示变量未初始化,typeof undefined的结果是undefined。
(2)null用于表示对象不存在,typeof null的结果是object。
2.NaN
JavaScript使用NaN,Not a Number的缩写,表示它无法表示的数值结果。NaN是不是你很怪异。它还有一个更怪异的地方,NaN不仅用于表示所有无法表示的数值,还是JavaScript中唯一一个与自己不相等的值!
if(NaN != NaN){ //他们真的不相等
alert("我们真的不想等!");
}
- 1
- 2
- 3
NaN的正确用法
NaN与任何东西,包括它自己都不相等,因此不能以任何方式检查变量与NaN是否相等,除了使用特殊函数isNaN.
if(isNaN(myNum)){
alert("myNum said:"I am really a number");
}
- 1
- 2
- 3
事实上,NaN是一个很糟糕的名字,与其称之为“不是数字”,还不如称之为“无法表示的数字”。typeof NaN的结果是number
在JavaScript中,infinity指的任何超过浮点数上限而言,-infinity指的任何超过浮点数下限而言,怪异的地方就是infinity-infinity的结果是NaN。
比较
告诉你们一个大事实:“99” == 99 是相等的。为什么可以这样呢?JavaScript会按以下规则来比较:
(1)如果两个值的类型相同,就直接进行比较。
(2)如果两个值的类型不同,则尝试将它们转换为相同的类型,再进行比较。
如果将布尔值和数字、null和undefined或其他值进行比较呢,JavaScript会作如何转换,然后再进行比较呢?其实,JavaScript规范包含一套非常简单的规则,指定了对两个不同类型的值进行比较时,将如何进行转换,如果你能记住这些规则,你就能掌握JavaScript比较的工作原理,其他类型的编程语言通常不自动进行转换,而JavaScript则会自动转换。
相等符号有两个"=="(相等)和“===”(严格相等)。**===(严格相等)涉及的规则只有一条:当且仅当两个值的类型和值都相同时,它们才严格相等。**同样也有!==和!=,但前者比后者严格。
3.JavaScript将视以下五个值为false
(1)undefined
(2)null
(3)0
(4)空字符串
(5)NaN
谢谢阅读。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/88016448
- 点赞
- 收藏
- 关注作者
评论(0)