老师为什么这样不输出alert?

老师为什么这样不输出alert?

<!DOCTYPE html> 
<html lang="zh-CN"> 
<head> 
    <meta charset="UTF-8" /> 
    <title>函数定义的位置</title> 
</head> 
<body> 
<script type="text/javascript"> 
//在此处补充代码
function add(num1,num2){
  function isNumber(){
    if(isNaN(num1)||isNaN(num2)){
      alert('请传入数字类型的参数')
    }else{
      return num1+num2;
    }
  }
  return  isNumber();
}
document.write(add('a','1'));

</script> 
</body> 
</html>a

老师这里的:

document.write(add(a,5)); 这样输出的话为什么就不提示alert?

document.write(add('a',5));为什么这样才输出alert? 

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

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

2回答
好帮手慕粉 2020-02-22 19:08:11

同学你好,同学分析的是正确的,但这不是我们这个练习题的目的啊,我们只是在考察isNaN这个方法的使用,在这个练习中,同学可以正常使用这个方法就可以了,并没有想实现同学说的那么完善判断的功能。同学感兴趣的话,可以自己实现下。

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

好帮手慕粉 2020-02-22 18:12:17

同学你好,关于同学的问题回答如下:

1、因为如果加了引号,是字符串,不加引号,a就是变量了,我们可以看下传入变量的情况:

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

控制台报错:

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

a是一个未定义的变量。所以说没有弹出是因为报错了。

2、第二个会弹出alert是因为满足if里面的条件,同学传了a,而a是字符串不是数字,所以结果为true:

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

那isNaN(num1)为真,就执行if语句,弹出alert语句。

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

  • 提问者 陈立天 #1
    document.write(add('1','2') )这样的话输出的结果是字符串拼接。 那这个函数如果是想实现加法而不是字符串拼接的功能呢,就要写 成: document.write(add(1,2))这样才输出3,但如果在代码中写两个文本和一个输出结果,也就是在前端网页中展示出来的页面有2个文本框和一个输出结果,这是用来给用户输入的。 想实现的效果是,用以上方法,来判断用户输入的文本框内的如果是非数字,那就alert提示非数字,如果是数字,就输出 用户输入的两个文本加法的结果。按照上面的代码来看的话,只有不加引号 才能实现加法的效果,而加了引号实现的是字符串的拼接。那如果用户输入了a 那就会报错,而不是alert 非数字了。这样不是很鸡肋吗
    2020-02-22 18:31:24
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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