这个事须要反复强调。方法是 类型 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; } }