维基百科关于一等公民的文章指出,“一些作者”认为,如果使用语言supports their creation at run-time,函数只是语言中的一等公民。詹姆斯·科格兰写的article明确地称职能为一等公民 - 无论他是否意识到关于头等标准的争议,我不知道。
以下是我的问题:
值得一提的是,基于更广义的标准(适用于其他一般对象),JavaScript函数显然是一等公民,即它们可以作为变量传递;因此,我觉得上面提到的标准为对话提供了一个有趣的动态 - 或者至少是一个澄清的动态 - 正如一个用户写的那样 - “任意”。
答案 0 :(得分:13)
var adder = new Function('a', 'b', 'return a + b');
adder(3, 4); // returns 7
更精细地说,这可以用于应用任意二元运算符:
function make_binary_fun(operator) {
return new Function('a', 'b', 'return a ' + operator ' b');
}
var adder = make_binary_fun('+');
var multiplier = make_binary_fun('*');
答案 1 :(得分:8)
这是一个在JavaScript中在运行时创建函数的函数示例:
function makeIncrementer(value) {
return function(x) {
return x+value;
}
}
它接受一个值,并返回一个将该值添加到其输入的函数。
以下是一些调用它的方法示例:
var f = makeIncrementer(5);
f(2); // 7
f.call(null, 3); // 8
f.apply(null, [4]); /// 9
var object = {};
object.increment = f;
object.increment(5); // 10