首页 新闻 会员 周边

求解释js代码!!!!!!

0
[已解决问题] 解决于 2013-11-08 10:31

<script type="text/javascript" language="javascript">

    function test(){
        var really=(function(obj,num,str){
                        return function(){
                            return obj+num+str;
                        }
                    })(null,123,"good");
        var v=really("oh","fell","good");
        alert(v);
    }
  test();
</script>
qiuhua的主页 qiuhua | 菜鸟二级 | 园豆:202
提问于:2013-11-06 22:19
< >
分享
最佳答案
0

    <script type="text/javascript" language="javascript">

         function test() {                           //这个是直接调用的匿名函数,参数已设定,不可修改.              ///(function (obj, num, str) {              //中间代码略.              /// })(null, 123, "good");              var really = (function (obj, num, str) {

             ///匿名函数,没有变量执行,外部不可调用.但是因为有really这个变量间接指向,所以还是可以调用的.              ///function () {              ///       return obj + num + str;              ///   }                 return function () {                     return obj + num + str;                 }             })(null, 123, "good");

            ///所以这样调用,结果一样的.             var v = really();                         alert(v);           

        }         test();//第一步执行test(),这个测试的结果是:123good.     </script>

奖励园豆:5
nqsan | 菜鸟二级 |园豆:207 | 2013-11-06 23:01
其他回答(4)
0

虽然知道是闭包,原理还不是很清楚,关注下

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-11-07 07:58
0

1. really 被值为 function(){ return obj+num+str; } // 而 obj+num+str 的值为 123good

2. 现在调用 really("oh","fell","good") // really本身是个无参函数,所以这三个值不能做为 obj,num,good的值,而是在 arguments里面,其 arguments.length=3

3. 最后 v 值是闭包的值 123good,如果要取"oh","fell","good",则只能在 arguments 取

Yu | 园豆:12980 (专家六级) | 2013-11-07 08:39
0

就是语法,能看懂会用就行。

angelshelter | 园豆:9887 (大侠五级) | 2013-11-07 20:38
0

学习了

panjk | 园豆:712 (小虾三级) | 2013-11-08 09:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册