百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> JavaScript闭包的小问题
分享文章到:

JavaScript闭包的小问题

发布时间:01/15 来源: 浏览: 关键词:
闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实在是比较晦涩,对我来说也是一样. 但是他也是js能力提升中无法绕过的一环,我们这里为各位介绍的是JavaScript闭包的小问题具体的如下。


怎么说,闭包大体也就是作用域的问题。
闭包的一个用途是用于模块化,保护函数体内的私有变量,如:


var foo = function(){
    var _num = 1;
    var sayHello = function(){
        console.log('hello');
    };
    var getNum = function(){
        return _num;
    };
    return {
        getNum : getNum ,
        sayHello : sayHello
    }
}
var num = foo().getNum();
console.log(num); //1
foo().sayHello(); //hello

模块化的东西不多说,下面说之前一直不解的问题:

var $div = $("div");
for(var i = 0; i < $div.length;i++){ //length = 4
    $div[i].onclick = function(){
        console.log(i); // 4 4 4 4
    }
}

原因在于log的参数i为形参,只有在onclick事件触发时,才将i赋值。

简单修改,通过立即执行函数即可将i进行绑定:

var $div = $("div");
for(var i = 0; i < $div.length;i++){ //length = 4
    $div[i].onclick = (function(i){
        console.log(i); // 1 2 3 4
    }(i));
}

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有17人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板