JavaScript怪异的类型

举报
yd_221104950 发表于 2020/12/02 23:45:46 2020/12/02
【摘要】 typeof运算符可以用来检查类型,如: var car = { model:"baba", color:"red" }; alert(typeof car); 12345 结果是object。 1.undefined 对于任何未初始化的东西,都会将undefined赋给它,undefined的类型是undefined,是不是很怪异。 可以将变量赋为nul...

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。