老师帮吗看看我定义的这个全局变量btm1为什么不能被我的方法赋值呢

老师帮吗看看我定义的这个全局变量btm1为什么不能被我的方法赋值呢

1
function init(){<br>    var num=document.getElementById("num")<br>    num.value=0;<br>    var btm1;<br>    var fh;<br>    var input=document.getElementsByTagName("input");<br>    for (var i = 0; i < input.length; i++) {<br>        input[i].onclick=function(){<br><br>            if(isNumber(this.value)){<br>                if(isNull(num.value)){<br>                    num.value=this.value;<br>                }else{<br>                    num.value=num.value+this.value;<br>                }<br><br>            }else{<br>                var btm=this.value;<br><br>                switch(btm){<br>                    case "+":<br>                        yunsuan(btm1,num);<br>                        alert(btm1)<br>                        fh="+";<br>                        break;<br>                    case "-":<br>                        break;<br>                    case "*":<br>                        break;<br>                    case "/":<br>                        break;<br>                    case "=":<br>                        switch(fh){<br>                            case "+":<br>                                var n=parseInt(num.value);<br>                                num.value=btm1+n;<br>                                console.log(btm1);<br>                                break;<br>                        }<br>                        break;<br>                    case ".":<br>                        break;<br>                    case "c":<br>                        break;<br>                    case "←":<br>                        break;<br>                    case "+/-":<br>                        break;<br><br>                }<br>            }<br>        }<br>    }<br><br>function yunsuan(n,n1){<br>    n=parseInt(n1.value);<br>    n1.value=0;<br><br><br>}<br>

相关截图:

http://img1.sycdn.imooc.com//climg/609a66ad092512b512950640.jpg

尝试过的解决方式:

我在赋值的方法中经过弹窗测试,参数n是可以被正常赋值的,但是就是不知道为什么带不到btm1去

正在回答

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

2回答

同学你好

首先弹出undefined是因为同学初始化时未给btm1进行赋值,其次是因为除了数组之外,其他类型在函数中的值不会改变其本身的值,原理跟java类型,所以这里给btm1赋值后弹出的也是原来的值

祝学习愉快~

  • 加1s的阿呱 提问者 #1
    大概明白了,也就是说,btm1在方法中被赋值,其作用域只在这个赋值方法中有效,出了这个方法了,btm1就又重新变为未初始化的状态了是吧?那想请问一下老师,该如何优化这个btm1的赋值代码,达到减少重复性,将重复的赋值功能编写在一个函数中呢?
    2021-05-12 11:04:27
  • 加1s的阿呱 提问者 #2
    老师我明白了,方法带返回值就行了
    2021-05-12 16:35:08
好帮手慕阿园 2021-05-12 16:19:45

同学你好

1、是的,可以这么理解

2、同学是要给btm1进行赋值吗,如果是,可以通过返回值的形式试试,如下

1
2
3
4
function yunsuan(n,n1){
n=parseInt(n1.value);
return n;
}
1
btm1=yunsuan(btm1,num);

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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