BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #18219同步于 2012/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

这个算是JavaScript的闭包吗? 看不太懂,请教大家

gadou
2012/11/24镜像同步7 回复
myFunction = function(){ var myPrivate; var myPrivateFun1 = function(){ }; var myPrivateFun2 = function(){ myPrivateFun1(); return { a: function(){} } }; return myPrivateFun2; }(); 问题: 1、myFunction函数里有几个闭包? 2、整个程序的执行过程是怎么样的? 3、谁调用的myPrivateFun2?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
gadou机器人#1 · 2012/11/24
myFunction为什么一定要写成即时调用的形式? fun = function(){ }(); 在html中,先引入了上述js文件 在下面进行了如下使用: <script>var xx=myFunction();</script> myFunction在上面不是已经销毁了吗? 怎么还可以使用? 这是什么用法呢? 【 在 gadou (嘎豆) 的大作中提到: 】 : myFunction = function(){ : var myPrivate; : var myPrivateFun1 = function(){ : ...................
binux机器人#2 · 2012/11/24
首先 ==================== function(){ var myPrivate; var myPrivateFun1 = function(){ }; var myPrivateFun2 = function(){ myPrivateFun1(); return { a: function(){} } }; return myPrivateFun2; } ========= 这里**定义了一个函数**,但是没有动,没有执行。 () ========= 它开始动了!它干了什么呢? var myPrivate var myPrivateFun1 var myPrivateFun2 ========= 定义了三个变量,其中有两个是函数,但是,注意,是定义。依旧没有动,然后它 return myPrivateFun2 ========= 返回了!于是myFunction这个变量得到了一个值:myPrivateFun2 于是 1、管他呢,我只看得到作用域 2、见上文 3、没有人调用myPrivateFun2,或许xx会吧 4、这么写是为了产生一个匿名的命名空间 5、myFunction什么时候销毁了?`myFunction = function(){}()`明明在赋值好不好,myFunction获得了`function(){}`这个匿名函数的返回值
gadou机器人#3 · 2012/11/24
4、这么写是为了产生一个匿名的命名空间 这点不太理解 意思是其中命名的变量及函数不会被其它所有地方的变量干扰吗? 【 在 binux (足兆叉虫|中立生物|) 的大作中提到: 】 : 首先 ==================== : function(){ : var myPrivate; : ...................
gadou机器人#4 · 2012/11/24
试了一下 如果不这么写 myFunction = function(){ }(); 后面没办法用myFunction了 【 在 binux (足兆叉虫|中立生物|) 的大作中提到: 】 : 首先 ==================== : function(){ : var myPrivate; : ...................
binux机器人#5 · 2012/11/24
4、这么写是为了产生一个匿名的命名空间 这点不太理解 意思是其中命名的变量及函数不会被其它所有地方的变量干扰吗? 是 myFunction = function(){ return 1; }(); 【 在 gadou 的大作中提到: 】 : 试了一下 : 如果不这么写 : myFunction = function(){ : ...................
gadou机器人#6 · 2012/11/24
myFunction = function(){ return 1; }(); 如果没有最后的() 这个就相当于一个函数定义 但是后面这样写为什么不能执行了呢 var xx=myFunction(); 【 在 binux (足兆叉虫|中立生物|) 的大作中提到: 】 : 4、这么写是为了产生一个匿名的命名空间 : 这点不太理解 : 意思是其中命名的变量及函数不会被其它所有地方的变量干扰吗? : ...................
binux机器人#7 · 2012/11/24
你看了上面的解释吗? myFunction得到了匿名函数function(){return 1;}的返回值,看好返回值是什么 【 在 gadou 的大作中提到: 】 : myFunction = function(){ : return 1; : }(); : ...................