- 方法也是对象
这个事需要反复强调。方法是 类型 Function 的对象,和其他对象一样,它也有方法。
function gen() {
return function ans(factor) {
return 2 * factor;
};
}
如果看着混乱,可以使用变量看看
function gen() {
var f = function ans(factor) {
return 2 * factor;
};
return f;
}
或者这样
function gen() {
function ans(factor) {
return 2 * factor;
};
return ans;
}
- 方法的命名方式
试想你定义下面一个方法
function f(factor) {
return 2 * factor;
}
和下面这个是一样的
var f = function (factor) {
return * factor;
}; f(2);
- 方式不支持多态
你不能定义两个名字一样的方法,寄希望使用不同参数来区分。后面定义的方法会覆盖前面的方法。
function ans(f1, f2) { ... } function ans(f1) { ... } // 这个会替代前面的方法.
需要注意的是所有的参数都不是必须的
function ans(a, b) {
//...
}
ans(2); //ans 被调用时 a = 2, and b = undefined
- 函数返回
在方法定义中你可以返回任意值或不返回
function () {
if (cond1) {
// 返回一个对象t
return {
a: 10
};
} else if (cond2) {
// 返回 undefined
return;
} else if (cond3) {
// 返回一个数字.
return 1;
}
}