为了账号安全,请及时绑定邮箱和手机立即绑定

哪位大师帮我解答一下,为什么全局变量放函数外不行?

<script>

var txt1=parseInt(document.getElementById("txt1").value);

var txt2=parseInt(document.getElementById("txt2").value);

var se=document.getElementById("vu").value;

var d;


function result(){

switch(se){

case "+":

d=txt1 + txt2;

break;


case "-":

d=txt1 - txt2;

break;


case "*":

d=txt1 * txt2;

break;


case "/":

d=txt1 / txt2;

break;

}

document.getElementById("sum").value=d;

}

</script>


<input type="text" id="txt1">

<select id="vu">

  <option value="+">+</option>

  <option value="-">-</option>

  <option value="*">*</option>

  <option value="/">/</option>

</select>

<input type="text" id="txt2">

<input type="button" value="=" onclick="result()">

<input type="text" id="sum">



正在回答

2 回答

觉得是 onclick绑定的是result()函数,而你的变量并没有在里边,所以没有执行get和赋值

自己的见解~不知道对不对

0 回复 有任何疑惑可以回复我~
#1

bestMan 提问者

是的呀,我测试别的例子,把全局变量放在函数体外都可以执行的呀,这个不例子不太明白,为什么把全局变量放在函数体执行不了
2019-06-14 回复 有任何疑惑可以回复我~
#2

bestMan 提问者

难道是因为switch语句的原因,就必须放在函数体内?
2019-06-14 回复 有任何疑惑可以回复我~
#3

慕尼黑0535884 回复 bestMan 提问者

开始的时候是执行了,但是这个时候你的text中的value值为空undefined, 最后执行onclick绑定的result()函数的时候,因为没有在函数内部,不执行,所以并没有重新获取值,所以你填的值还是为空呀
2019-06-14 回复 有任何疑惑可以回复我~
#4

bestMan 提问者 回复 慕尼黑0535884

666,应该就是这样的,谢啦~兄弟
2019-06-14 回复 有任何疑惑可以回复我~
#5

bestMan 提问者 回复 慕尼黑0535884

开始执行了一遍text中的value值后,再执行onclick绑定的函数时外面的全局变量就不执行了,原来是这样的原理
2019-06-14 回复 有任何疑惑可以回复我~
查看2条回复

var声明的是局部变量的关键字,js的局部变量作用域是以函数为单位,你定义到函数外面,在函数内部调用是不行的

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

哪位大师帮我解答一下,为什么全局变量放函数外不行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信