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

JavaScript中一个函数怎么获得另一个函数中变量

JavaScript中一个函数怎么获得另一个函数中变量

慕哥9229398 2019-03-14 18:15:01
代码如下$(function(){    $('.a').on('click',function(){        var counter=0        counter++    })        $('.b').on('click',function(){        if(counter>=3){            alert(大于3)        }    })})有2个按钮,a和b,点击a,变量counter会增加1。当b按钮点击的时候,如果变量counter大于等于3时,会弹出提示框。因为counter不是全局变量,每次点击之后会被销毁,所以每次counter都是1,如果用闭包,该怎么实现。再不使用全局变量的情况下,b按钮点击的函数中又应该怎么获得a按钮函数中的counter值。
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

一定要在上层作用域声明的,比如这样


$(function(){


    (function() {

        var counter = 0;

        

        $('.a').on('click',function() {

            counter++;

        });

        

        $('.b').on('click',function() {

            if(counter > 3) {

                alert('大于3');

            }

        });

    })();

})


查看完整回答
反对 回复 2019-03-25
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

因为你用匿名函数包装了一层,所以在这个匿名函数内定义的局部变量,在子级函数中是有效的,即你应该:


$(function(){

    var counter=0;

    $('.a').on('click',function(){

        counter++;

    })

    

    $('.b').on('click',function(){

        if(counter>=3){

            alert(大于3);

        }

    })

})

你原来对a的监听函数逻辑会导致counter永远是1,因为每次进入你都是初始化为0,然后加1的。


查看完整回答
反对 回复 2019-03-25
  • 2 回答
  • 0 关注
  • 1293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信