欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript怪异的类型

程序员文章站 2024-03-25 19:34:28
...

typeof运算符可以用来检查类型,如:

 var car = {
        model:"baba",
        color:"red"
 };
 alert(typeof car);

结果是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("我们真的不想等!");
}

NaN的正确用法
NaN与任何东西,包括它自己都不相等,因此不能以任何方式检查变量与NaN是否相等,除了使用特殊函数isNaN.

if(isNaN(myNum)){
	alert("myNum said:"I am really a number");
}

事实上,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

谢谢阅读。

相关标签: NaN undefined