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 閱讀(313) 評論(0)  編輯  收藏 所屬分類: |:Web View:|
          主站蜘蛛池模板: 德格县| 庄河市| 承德县| 沂南县| 双牌县| 临沭县| 平凉市| 麻江县| 来宾市| 宁夏| 孝昌县| 云林县| 上杭县| 淅川县| 天全县| 洪雅县| 桂林市| 且末县| 嘉兴市| 敖汉旗| 垣曲县| 元氏县| 吉木萨尔县| 南靖县| 海伦市| 延边| 邻水| 龙江县| 界首市| 收藏| 吉隆县| 万源市| 林西县| 从江县| 永清县| 新野县| 鹤庆县| 集贤县| 盘锦市| 九龙县| 临西县|