首页 > 代码库 > 关于javascript的闭包
关于javascript的闭包
想要搞清楚闭包,必须先了解变量的作用域:全局(变量),局部(变量)。全局变量,不管你在哪里都可以直接读取:
var n = 123; function me(){ alert(n); } me();//必然弹出 123
而在函数的内部定义一个变量,函数外部自然获取不到:
function me() { var n = 123; } alert(n);//报错
当然了,学过JS的都知道,如果在函数内部声明变量时,不用var,就相当于在外部声明了一个全局变量:
function me(){ n = 123; } me(); alert(n);// 可以弹出 123,因为变量n其实是一个全局变量
那么有什么办法可以让我们在外部可以读取内部的变量呢?那就是闭包,说白了就是一种特殊的函数写法:首先在函数体内部再定义一个函数:
function me(){ var n = 123; function you(){ alert(n); //123 因为me 是 you的父函数,自然你是可以拿到你爸爸的财产的; } }
这样的嵌套,体现了JS语言链式作用域的特征,也就是父函数(父对象)内的所有变量对于子函数是可见的,但是反过来就不行,好比一个忤逆子,接着在外部拿到内部的变量,只需要子函数被返回即可
function me(){ var n = 123; function you(){ alert(n); //123 因为me 是 you的父函数,自然你是可以拿到你爸爸的财产的; } return you; } var our = me(); our(); // 123
这下子,忤逆子的阴谋得逞了!
关于闭包的应用,我会逐渐更新到博客的!!
关于javascript的闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。