javascript的闭包

来源:互联网 发布:java软件工程师学费 编辑:程序博客网 时间:2024/06/05 10:12
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript" charset="UTF-8">/** *  闭包:函数1可以访问另外一个函数2作用域中的变量 * 函数1通常是在函数2中定义的内部函数 *///先理解这个,再看下面的闭包案例var name='mike';var obj = {name:'leo',say:function(){ return function(){console.log(this.name);}}};console.log(obj.say()); //结果是一个函数结构体 function(){console.log(this.name);}obj.say()(); //mike obj.say()返回一个全局作用域的函数,然后调用这个函数,结果是全局变量name的值’mike‘;/** * 闭包举例 */function f(x){var tem =x;return function(){tem+=x;console.log(tem);}}var a = f(50);console.log(typeof a); //functiona();//100//内层匿名函数可以访问f(x)这个函数作用域内的tem和x ,只要内层函数中调用了外层变量,那么这个变量不会在外层函数(f(x))执行完后回收//而这些变量在外层函数之外是不可见的,所以相对外界来说是闭包</script></head><body></body></html>

0 0