這個事須要反覆強調。方法是 類型 Function 的對象,和其餘對象同樣,它也有方法。函數
function gen() { return function ans(factor) { return 2 * factor; }; }
若是看着混亂,能夠使用變量看看spa
function gen() { var f = function ans(factor) { return 2 * factor; }; return f; }
或者這樣code
function gen() { function ans(factor) { return 2 * factor; }; return ans; }
試想你定義下面一個方法對象
function f(factor) { return 2 * factor; }
和下面這個是同樣的blog
var f = function (factor) { return 2 * factor; };
f(2);
你不能定義兩個名字同樣的方法,寄但願使用不一樣參數來區分。後面定義的方法會覆蓋前面的方法。io
function ans(f1, f2) { ... } function ans(f1) { ... } // 這個會替代前面的方法.
須要注意的是全部的參數都不是必須的function
function ans(a, b) { //... } ans(2); //ans 被調用時 a = 2, and b = undefined
在方法定義中你能夠返回任意值或不返回class
function () { if (cond1) { // 返回一個對象t return { a: 10 }; } else if (cond2) { // 返回 undefined return; } else if (cond3) { // 返回一個數字. return 1; } }