JavaScript怪异的类型

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

谢谢阅读。

猜你喜欢

转载自blog.csdn.net/weixin_40763897/article/details/88016448
今日推荐