还是不能明白为什么要将var btn_num1的定义上升一级才不会报错

还是不能明白为什么要将var btn_num1的定义上升一级才不会报错

# 具体遇到的问题
​当点+号时, btn_num1=parseInt(num.value)不是已经将btn_num1初始化了吗,怎么会报错




case  "+":

    btn_num1=parseInt(num.value);

    num.value=0;


# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

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

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

2回答
好帮手慕阿满 2021-02-07 10:22:44

同学你好,你可以这么理解,如果将btn_num1定义为一个局部变量,如:

http://img1.sycdn.imooc.com//climg/601f4e5f09036ac805020102.jpg

当你点击"+"时,会执行else,又重新定义了一遍btn_num1,之前获取到的数据就无效了,所以执行结果为NaN。

如果btn_num1是全局变量,不再重新定义,之前获取到的数据可以继续使用,会得到正确的执行结果。

祝学习愉快~

好帮手慕小尤 2020-12-07 11:31:15

同学你好,以计算10+20=30为例,当点击=号时,由于btn_num1变量定义在别的按钮点击事件中,所以不能获得的btn_num1值(第一个数字),从而无法进行加减等运算。所以需要将btn_num1定义为全局变量,这样所有按钮的点击事件都能获得btn_num1值。如下所示:

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

  • 提问者 慕沐1462760 #1
    还是不明白,能举个简单点的例子吗
    2020-12-07 16:23:06
  • 好帮手慕小尤 回复 提问者 慕沐1462760 #2

    同学你好,  case "+"中定义var btn_num1变量,只能在 case "+"进行调用。在运算时,点击等于号(=),就无法获取到 case "+"中定义var btn_num1变量,最终导致运算错误。如下所示:

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

    所以btn_num1变量,需要定义为全局变量,在所有可以点击的地方都可以调用到btn_num1变量进行运算等操作

    祝学习愉快!

    2020-12-07 17:24:21
  • 提问者 慕沐1462760 回复 好帮手慕小尤 #3
    btn_num1不是在case+之前已经声明了吗,然后在case+内赋值,并不影响case=的调用才对啊
    2020-12-07 17:29:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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