javascript乘法和加法_Web前端:JavaScript中的NaN是什么?

2ee374248a6b5549fb550f7d70bfe7e7.png

大家好,我来了,本期为大家带来的前端开发知识是”Web前端:JavaScript中的NaN是什么?“,有兴趣做前端的朋友,一起来看看吧!

JavaScript中的数字类型包含整数和浮点数:

cebff8bdfab7a74a1ecd13ccc38e813e.png

另外,还有2个特殊数字值:(Infinity大于任何其他数字的数字)和NaN(表示“非数字”概念):

e1824d3b0658e469d29e2bf7a9f508e1.png

虽然直接使用的NaN情况很少见,但在对数字进行失败的操作后却会令人惊讶地出现。

让我们仔细看一下NaN特殊值:如何检查变量是否具有NaN,并重要地了解创建“非数字”值的方案。

1. NaN号

JavaScript中的数字类型是所有数字值的集合,包括“非数字”,正无穷大和负无穷大。

可以使用特殊表达式NaN或作为全局对象或Number函数的属性来访问“非数字” :

4b7b1e2d41763c45ccfa310d104e8421.png

尽管具有数字类型,但“非数字”是不代表实数的值。NaN对于表示数字上的错误操作很有用。

例如,将数字与相乘undefined不是有效运算,因此结果为NaN

24cd246755bfc4c2812691fc8a5ca439.png

也尝试解析无效的数字字符串,例如'Joker'导致NaN

68f41969d3a03fab0bb05f0bd3d054ae.png

第3.节“导致NaN的操作”详细信息会生成NaN

2.检查与NaN的相等性

的有趣特性NaN是,即使它本身也不等于任何值NaN

c6061ef96cc10c3ba0900c7b62b01afc.png

此行为对于检测变量是否为有用NaN

e2ee678356781609a666634c82087d40.png

someNumber !== someNumber表达式true仅当someNumber为时NaN。因此,以上代码片段将记录到控制台"Is NaN"

JavaScript具有内置功能来检测NaNisNaN()Number.isNaN()

79294d181fca240964db7f94ede4e9e1.png

这些函数之间的区别在于Number.isNaN()不会将其参数转换为数字:

ecaa682d282680dbe0f7537308afd8ad.png

isNaN('Joker12')将参数'Joker12'转换为数字NaN。因此函数返回true

另一方面,Number.isNaN('Joker12')检查参数是否为而不进行转换NaN。该函数返回,false因为'Joker12'不相等NaN

3.产生NaN的运算

3.1解析数字

在JavaScript中,您可以将数字字符串转换为数字。

例如,您可以轻松地将'1.5'字符串转换为1.5浮点数:

434230aff3a835f33c57e07749a20579.png

当字符串不能转换为数字时,解析函数返回NaN:表示解析失败。这里有些例子:

854eb123b7ca8215bcad704aaafc723f.png

解析数字时,最好验证一下解析结果是否为NaN

3cc9ce56f97292b69628ea0dd1b8a36f.png

的解析inputToParse失败,因此parseInt(inputToParse, 10)返回NaN。条件if (isNaN(number))true,并且number分配给0

3.2 未定义为操作数

undefined在加法,乘法等算术运算中用作操作数的结果NaN

例如:

d3ac9557018ae27fa4edc70d144aa20b.png

getFontSize()fontSize从样式对象访问属性的函数。调用时getFontSize({ size: 16 }),结果为undefined(对象fontSize中不存在{ size: 16 }属性)。

fontSize * 2被评估为undefined * 2,结果为NaN

undefined在算术运算中将缺少的属性或返回的函数用作值时,将生成“非数字” 。

确保undefined不会达到算术运算是防止的好方法NaN。随时检查“ 7个未在JavaScript中处理的提示”。

3.3 NaN作为操作数

NaN当非整数操作中的操作数为时,也会生成值NaN

2ca2e1e7c410c92b3f997facef16908e.png

NaN 分布在算术运算中:

651ed7cf9065d0ffc5fa5834d92ff89e.png

resultinvalidNumber值(具有NaN)附加到后,对变量的操作会中断 result

3.4不确定形式

NaN 算术运算采用不确定形式时,将创建值。

分工0 / 0Inifinity / Infinity

3d1a1d289dad4588c55cab080e28b2dc.png

的乘法0Infinity

27a46da1df5a437500c33544931546b6.png

无限数量的不同符号的加法:

8edb79f4f0226ee03b992bf3661eb3df.png

3.5数学函数的无效参数

负数的平方根:

da8648e86f32bc3e386b85adb492a33d.png

或负数的对数:

00688fe98415b05a7964ca4d3f1b78e8.png

4。结论

用JavaScript用表示的“非数字”概念NaN对于表示数字上的错误操作很有用。

NaN不等于任何值,即使是NaN本身也不等于。建议使用检查变量是否包含NaN的方法Number.isNaN(value)

将数字字符串转换为数字失败时,可能会导致显示“非数字”。这是一个好主意,检查是否parseInt()parseFloat()Number()不返回NaN

undefinedNaN作为算术运算中的操作数通常会导致NaN。正确处理undefined(为缺少的属性提供默认值)是防止这种情况的好方法。

数学函数的不确定形式或无效参数也会导致“ Not A Number”。但是这些情况很少发生。

这是我的务实建议:“知道NaN吗?搜索undefined!”

原著作者:德米特里·帕夫鲁汀

文章来源:国外

原著链接:

Dmitri Pavlutin Blog​dmitripavlutin.com
ce289af553a4a10d2cfdd1776dcca53c.png

PS:原著文章内容为英文版本,建议使用360极速浏览器进行翻译阅读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值