Javascript我學之二函數定義

來源:互聯網
上載者:User

標籤:

  本文是金旭亮老師網易雲課堂的課程筆記,記錄下來,以供備忘

函數 幾個要點:                a).函數是javascript中的一等公民 (重要性)
                b).函數是一個對象                c).函數定義了一個獨立的變數範圍

 

定義方式 a)命名函數:

          除非在另一個函數內部定義,否則,命名函數是全域的。  

1                 // 全域的命名函數2         function add(x, y) {3             return x + y;4         }5         console.info(add(100, 200));   //300
b)匿名函數:    

            匿名函數通常賦值給一個變數,再通過變數調用。

        var func = function (x, y) {            return x + y;        }        console.info(func(5, 2)); //7

            匿名函數適用於以下這種 “立即執行的匿名函數” 的情況:

        console.info(            function (x, y) {                        return x + y;                    }(100, 200)   //立即調用                );
C)定義方式影響代碼執行效果

                命名函數可以先使用,再定義

        console.info(sum(10, 10));        function sum(num1, num2) {            return num1 + num2;        }

              匿名函數必須先定義,再使用

        //console.info(sumFunc(10, 10));    //Uncaught TypeError: Property ‘sumFunc‘ of object [object Object] is not a function         var sumFunc = function (num1, num2) {            return num1 + num2;        };        console.info(sumFunc(10, 10));
函數傳回值:

                 用return 產生傳回值.如沒有return ,則函數返回undefined

1         function func() {2         }3         console.info(func()); //undefined4         function func2() {5             return;  //空的返回語句6         }7         console.info(func2()); //undefined
return裡藏著的坑:
1             var func = function (x, y) {2                 var  sum = x + y;3                 return {4                     value : sum5                 }6             }

                   這麼寫沒有問題:   調用 func(5,5)    返回的是 Object {value: 10}

                   然而:  

1         var func = function (x, y) {2             var sum = x + y;3             return4             {5                 value: sum6             };7         }8         console.info(func(5,5)); //undefined

 

                   return 後面跟著個斷行符號換行的話,                   調用 func(5,5)    顯示的是 undefined                   編輯器幫我們在return後加了個分號;   然而在這情況下並沒有什麼卵用。  函數即對象:
1         function add(x, y) {2             return x + y;3         }4         console.info(add(100, 200));  //3005         var other = add;  //other和add引用同一函數對象6         console.info(other(300, 400)); //7007         console.info(typeof other);   //function8         console.info(add === other);  //true
嵌套定義的函數:                  在函數內部,可以定義另一個函數。
1         function outerFunc(a, b) {2             function innerFunc(x) {3                 return x * x;4             }5             return Math.sqrt(innerFunc(a) + innerFunc(b));6         }7         console.info(outerFunc(3, 4));  //5
訪問外部變數:             內建函式可以訪問外部的變數與參數。
 1         var globalStr = ‘globalStr‘; 2         function outerFunc2(argu) { 3             var localVar = 100; 4             function innerFunc2() { 5                 localVar++; 6                 console.info(argu + ":" + localVar + ":" + globalStr); 7             } 8             innerFunc2(); //hello:101:globalStr 9         }10         outerFunc2("hello");
返回函數的函數:

               因為函數是對象,所以可以作為傳回值。

1             function outerFunc(x) {2                 var y = 100;3                 return function innerFunc() {4                     console.info(x + y);5                 }6             }7             outerFunc(10)();  //110

 

 

 

Javascript我學之二函數定義

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.