字符串isNaN为什么是flase 难道他不是一个非数字吗?

字符串isNaN为什么是flase 难道他不是一个非数字吗?

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,这句“还是说Number.isNaN这里面传入一个参数为“NaN” 这3个固定字母才会为true 其他一律为false”理解正确,就是这个意思,即传入特殊数值NaN,Number.isNaN 的结果才是true,其余都是false。

祝学习愉快!

好帮手慕久久 2020-10-08 19:12:22

同学你好,问题解答如下:

同学要认真理解一下“Number.isNaN就是判断参数是不是“NaN”,只有参数是NaN(就是传了一个NaN作为参数,不是参数转换后是NaN)时,结果才是true”这句话,当参数是123 和123a时,它们不是NaN(数值NaN),所以结果为false,如下:

http://img1.sycdn.imooc.com//climg/5f7ef370094abe5404880164.jpg

http://img1.sycdn.imooc.com//climg/5f7ef3f20955e72205470223.jpg

此处不是很好描述,建议同学多读两遍,再听一下视频,尝试理解一下。

祝学习愉快!


  • 提问者 陈立天 #1
    转换后是NaN我理解,为什么说“123a”它本身不是NaN???
    2020-10-08 23:05:17
  • 提问者 陈立天 #2
    还是说Number.isNaN 这里面传入一个参数为“NaN” 这3个固定字母才会为true 其他一律为false??这样理解?
    2020-10-09 08:21:20
好帮手慕久久 2020-10-07 11:26:14

同学你好,问题解答如下:

二者是有些区别的,isNaN是判断参数是不是一个非数值类型,它会进行隐式类型转换;而Number.isNaN就是判断参数是不是“NaN”,只有参数是NaN时,结果才是true,如下:

http://img1.sycdn.imooc.com//climg/5f7d343509fe2eab06220191.jpg

至于二者能不能相互替代,主要取决于使用场景,假如某个功能中,必须判断参数是不是“NaN”本身,那么就只能使用Number.isNaN,即要根据使用场景来判断二者能不能替代、以及应该使用哪个方法。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 提问者 陈立天 #1
    没有明白老师的代码中的123 和123a 为什么是false 他难道不是一个非数字吗? 应该是true才对?? number.isNaN是没有隐式类型转换转换的 那应该是true把?
    2020-10-07 12:19:18
提问者 陈立天 2020-10-01 11:22:06

我知道了 window.isNaN 是强制类型转换为数字 然后在判断他是否是数字

而number..isNaN 是直接判断如:字符串,是否全等于NaN( '我是字符串' === NaN) 所以返回了false。

其中的区别就是是否进行类型转换的区别 。和返回布尔值的所代表的意义不同。

那么这里涉及到的直接比较和 转换类型比较 有啥区别吗? 我感觉都一样啊? 查了资料说 number..isNaN 会比window.isNaN更严谨一些?

  • 提问者 陈立天 #1
    这2者的使用是否能代替互相?如果不能,那么在什么情况下不能代替彼此
    2020-10-01 11:22:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师