首页 > Web开发 > 详细

JS中的作用域和闭包

时间:2014-06-04 17:17:36      阅读:366      评论:0      收藏:0      [点我收藏+]

作用域:在编程语言中,作用域控制着变量与参数的可见性及生命周期。JS确实有函数作用域,那意味着定义在函数中的参数和变量在函数外部是不可见的,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。

bubuko.com,布布扣
var a = 1;
var fs = function (){
    var b = 2;
    var c = 4
    var fun = function (){
        var c = 3;
        alert(a) //输出1
        alert(b) //输出2
        alert(c) //输出3
    }
    fun();
}
 fs();
bubuko.com,布布扣

 

闭包:作用域的好处是内部函数可以访问定义它们的外部函数的参数和变量(除了this和arguments)。我们通过调用一个函数的形式去初始化一个函数myObject,该函数将返回一个对象。此函数定义了一个value变量。该变量对increment和getValue方法总是可用的,但函数的作用域使得它对其他程序来说是不可见的。

bubuko.com,布布扣
//返回一个对象
var myObject = (function (){
    var value = 0;
    return {
        increment: function (inc){
            value += typeof inc === ‘number‘ ? inc : 1;
                },
        getValue: function (){
            return value;
        }
    }
})();
bubuko.com,布布扣

我们并没有把一个函数赋值给myObject。我们是把调用该函数后返回的结果赋值给它。注意最后一行的()。该函数返回一个包含两个方法的对象,并且这些方法继续享有访问value变量的特权。上例中getValue方法可以访问它被创建时所处的上下文环境。这被称为闭包。理解内部函数能访问外部函数的实际变量而无须复制是很重要的。

 

 

JS中的作用域和闭包,布布扣,bubuko.com

JS中的作用域和闭包

原文:http://www.cnblogs.com/zhuifeng/p/3764608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!