首页 新闻 会员 周边

JavaScript疑问

0
[已解决问题] 解决于 2019-05-14 15:36

<p>局部变量计数。</p>
<button type="button" onclick="myFunction()">计数!</button>
<p id="demo">0</p>
<script>
function add() {
var counter = 0;
return counter += 1;
}
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>

如果把上面的 var counter = 0;改成counter = 0;为什么它不会一直递增?不是说不使用var关键字,它就是一个全局变量吗?

菜鸟|的主页 菜鸟| | 初学一级 | 园豆:109
提问于:2019-05-13 11:02
< >
分享
最佳答案
1

去掉var后是会变成一个全局的。但是在这个例子中,每次进入add方法时你又赋值了一次0,所以表现上来看是不会递增的。
这个全局的意义在于可以在其他地方也能访问到这个counter。
还有任何不懂的可以加我qq 2057388734

奖励园豆:5
Joey先生 | 菜鸟二级 |园豆:232 | 2019-05-13 15:13
其他回答(4)
0

把 var counter = 0; 挪到函数外面去就行

by.Genesis | 园豆:2719 (老鸟四级) | 2019-05-13 11:39
1

全局是指的在函数外部也能访问到这个变量,在函数内部,你每次调用的时候,都重新赋值了,当然不会一直递增鸭;不要写这种让人迷惑的代码,就在外部定义一个全局变量,或者不定义变量,每次取 id="demo"的文本,转成int值,再去累计并重新赋值。

顾星河 | 园豆:7173 (大侠五级) | 2019-05-13 11:41
0

你问的问题 跟你现在的代码 是同一个问题 。 每次add都重新赋值了;

彼岸黎明 | 园豆:217 (菜鸟二级) | 2019-05-14 12:00
0

把counter放到外面。

龙行天涯 | 园豆:1794 (小虾三级) | 2019-05-14 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册