cAng^Er

          不懂我的人 , 離不了我 , 該了解了解我 !而懂我的人 , 更離不了我 , 因為他們愛我 。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            30 隨筆 :: 16 文章 :: 18 評論 :: 0 Trackbacks

          高手繞道!這跟閉包本身沒什么大的關系,也不知道怎么取標題,隨便湊了個數,望見諒!

          今天一個剛學js的朋友給了我一段代碼問為什么方法不執行,代碼如下:

          1 function  makefunc(x)  {
          2         return function (){
          3             return  x;
          4         }
          5     }
          6 alert(makefunc(0));

          其實不是不執行,只是朋友的意思這里alert出來的應該是“0”,而不是function (){return x;}。
          不是腳本寫錯了,只是沒搞懂return,從當前函數退出,并從那個函數返回一個值。如果返回的是一個函數,那么返回的也是函數本身。
          可以這樣修改上面的代碼,就是alert(makefunc(0)()):

          1 function  makefunc(x)  {
          2         return (function (){
          3             return  x;
          4         })();
          5     }
          6 alert(makefunc(0)());

          如果要返回函數執行的結果那么首先要讓這個函數執行,例如:

          1 function  makefunc(x)  {
          2         return (function (){
          3             return  x;
          4         })();
          5     }
          6 alert(makefunc(0));

          這里有一個匿名函數,

          1 (function (){
          2            return  x;
          3        })();

          在第一個括號內是匿名函數,第二個括號用于調用該匿名函數,您可以在第二個括號中傳入所需的參數。例如:

          1 (function( x , y){
          2     alert( x + y);
          3 })(2 ,3 );

          聲明: 本文采用 BY-NC-SA 協議進行授權 | WEB前端開發
          轉載請注明轉自《return閉包函數

          posted on 2011-06-15 17:56 cAng^Er 閱讀(307) 評論(0)  編輯  收藏 所屬分類: |:Web View:|
          主站蜘蛛池模板: 铁岭县| 宝坻区| 遂川县| 缙云县| 伊宁县| 高雄市| 棋牌| 全南县| 五大连池市| 吉木萨尔县| 阿拉善右旗| 沙湾县| 上思县| 稷山县| 盐边县| 安平县| 金阳县| 定襄县| 镇康县| 康平县| 平江县| 澜沧| 仁化县| 海伦市| 诸城市| 桃江县| 温宿县| 海淀区| 化德县| 灌南县| 庄河市| 孙吴县| 陈巴尔虎旗| 靖安县| 高安市| 琼中| 资中县| 延寿县| 永靖县| 永安市| 视频|