isNaN问题

isNaN问题

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

这个字符串1也会被当做数字吧.而且如果直接return value !== value  那如果我输入字符串'Hello', 那'Hello' !== 'Hello' 会return false. 可是Hello应该是返回true吧

正在回答 回答被采纳积分+1

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

4回答
离离钟 2018-12-16 15:50:53
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
console.log(isNaN('hello'));//true
console.log(Number.isNaN('hello'));//false
</script>
</body>
</html>

这里的两个方法代表的意义是不一样的。一个是window对象上的,一个是Number对象上的。

window对象上isNaN()是判断参数是否为非数字,如果不是数字,返回true。

而Number对象上的isNaN()是判断参数是否为NaN,如果不是NaN,则返回false。

上方的代码。hello是一个字符串。不是一个数字,所以返回true;也不是NaN,所以返回false。

不知道你能理解吗?

RogerLeung 2018-08-22 19:02:35

这个老师自己封装的isNaN()确实有问题。单独的return value !== value没有考虑到隐式转换的问题。

同学,我同意你对这个封装的质疑。因为这个函数没有真的实现isNaN()的功能。

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

  • 我的表述好像有错误,跟隐式转换没有关系。 突然好像理解了,老师的这个isNaN()只是判断输入的value是不是“NaN”而已,不是js原生Not a Number的功能……
    2018-08-22 19:08:25
好帮手慕糖 2018-08-20 10:06:21

你好,你说的输入'hello'是指调用函数的时候,参数是'hello'吗?即:如下;

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

这样得到的值是false哦,因为Hello' !== 'Hello' 会return false;

至于你说的Hello应该是返回true,不太理解,是指参数没有引号,直接输Hello,例:如下这种,这样的话是会报错的哦,Hello不是个变量,是作为字符串存在的需要添加引号的哦。

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

若能帮助到你,望采纳。

祝学习愉快~

  • 提问者 rickleong #1
    可是原生的isNaN() 函数用于检查其参数是否是非数字值的嗎。如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。 那視頻上他的這個isNaN只能判斷參數是不是NaN...
    2018-08-20 11:14:20
  • 好帮手慕糖 回复 提问者 rickleong #2
    你好,这里说的是你上述封装的函数isNaN,不是js的方法isNaN(),若是js的方法的话,检查console.log(isNaN("hello"))得到的是true,这里你可以把上面的函数换个名字,可以测试对比下,是不一样的哦。祝学习愉快~
    2018-08-20 11:23:23
小蜗牛linner 2018-08-19 21:02:52

是根据isNaN===isNaN为false来判断的,只要为非NaN都是返回的false

  • 提问者 rickleong #1
    isNaN不是判斷是不是數字嗎...
    2018-08-19 21:06:50
  • 小蜗牛linner 回复 提问者 rickleong #2
    如果isNaN函数的参数不是Number类型, isNaN函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断
    2018-08-19 21:11:06
  • 提问者 rickleong 回复 小蜗牛linner #3
    那就是非數字都會返回true吧
    2018-08-19 21:14:18
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
热门框架Vue开发WebApp 18版
  • 参与学习           人
  • 提交作业       209    份
  • 解答问题       3299    个

本路径是通过ES6基础知识、运用Zepto、Swiper、fullPag等移动端常用工具包、以及当下流行框架Vue,结合多个实战案例,还原真实开发场景,最终实现手机端购物商城网页开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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