js中闭包理解

来源:互联网 发布:剑灵捏人完美女神数据 编辑:程序博客网 时间:2024/06/05 02:01

闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部创建另一个函数。此时内部函数具有访问自身作用域、外部函数作用域、全局作用域。而外部函数则只有访问自身作用域和全局作用域,不具备范围内部函数作用域。

var num1 = 1;function out(){    var num2 = 2;    function(){        var num3 = 3;        system.log(num2);        system.log(num1);    }    //system.log(num3);  //wrong}

闭包引出的问题:闭包只能取得包含函数中任何变量的最后一个值

function createFunctions(){    var result = new Array();    for(var i=0;i<10;i++){        result[i] = function(){            return i;    };   }   return result;}

在闭包中使用this对象导致的问题:匿名函数的执行环境具有全局性,因此this通常指向window

var name="window";var object = {    name: "object",    getNameFunc:  function(){        return function(){            return this.name;    };   }}alert(object.getNameFunc()());  //window
原创粉丝点击