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

代码如下


$(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值。


慕哥9229398
浏览 1294回答 2
2回答

繁星点点滴滴

一定要在上层作用域声明的,比如这样$(function(){    (function() {        var counter = 0;                $('.a').on('click',function() {            counter++;        });                $('.b').on('click',function() {            if(counter > 3) {                alert('大于3');            }        });    })();})

人到中年有点甜

因为你用匿名函数包装了一层,所以在这个匿名函数内定义的局部变量,在子级函数中是有效的,即你应该:$(function(){    var counter=0;    $('.a').on('click',function(){        counter++;    })        $('.b').on('click',function(){        if(counter>=3){            alert(大于3);        }    })})你原来对a的监听函数逻辑会导致counter永远是1,因为每次进入你都是初始化为0,然后加1的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript