日期:2014-05-16 浏览次数:20414 次
在看书遇到了讲解js闭包的地方,讲的太学术了 根本不明白 最近在网上搜集了些资料 发现了一些通俗易懂的讲解 终于弄明白了,要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码: alert(n); } var n=999; } n=10; } 所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁 以下是个js闭包的使用 其中内部函数getNum()就是个闭包函数, nAdd是个全局的匿名闭包函数 var n = 10; nAdd = function(count){ n += count; } function getNum(){ alert(n); } } one(); nAdd(2); } var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()()); //The Window 最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object name不是全局变量么? 外层的name不应该被object中的覆盖么? 最近刚刚研究js闭包 小弟不明白为什么结果是The Window 而不是My Object name不是全局变量么? 外层的name不应该被object中的覆盖么? var object = { name : "My Object", getNameFunc : function(){ return function(){ return name; }; } }; alert(object.getNameFunc()()); //The Window var name = &quo