首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数可以在运行时在Javascript中创建吗?

函数可以在运行时在Javascript中创建吗?
EN

Stack Overflow用户
提问于 2015-02-11 21:01:52
回答 2查看 2K关注 0票数 4

维基百科关于一等公民的文章指出,“一些作者”认为,在语言在运行时支持它们的创建。的情况下,函数只是一种语言中的一流公民。这篇由James撰写的文章直截了当地称其为“一等公民”--无论他是否知道关于头等舱标准的争议,我都不知道。

以下是我的问题:

  1. 使用“运行时创建”的附加标准,JavaScript程序是一流的公民吗?

值得一提的是,基于更广义的标准(适用于其他总体对象),JavaScript函数显然是一流的公民,即它们可以作为变量传递;因此,我觉得上面提到的标准为对话添加了有趣的动态--或者至少是澄清的动态--不是像用户所写的那样是“任意的”。

  1. 如果是这样的话,在JavaScript中在运行时创建函数是什么样子的(这就是我们所说的承诺、回调、匿名等等)?
  2. 如果不是,在另一种语言中,在运行时创建函数是什么样子的?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-11 21:06:17

可以使用构造函数动态创建函数。

代码语言:javascript
复制
var adder = new Function('a', 'b', 'return a + b');

adder(3, 4); // returns 7

更详细地说,这可以用于应用任意二进制运算符:

代码语言:javascript
复制
function make_binary_fun(operator) {
    return new Function('a', 'b', 'return a ' + operator ' b');
}
var adder = make_binary_fun('+');
var multiplier = make_binary_fun('*');
票数 14
EN

Stack Overflow用户

发布于 2015-02-11 21:05:07

下面是一个在JavaScript运行时创建函数的函数示例:

代码语言:javascript
复制
function makeIncrementer(value) {
    return function(x) {
        return x+value;
    }
}

它接受一个值,并返回一个将该值添加到其输入中的函数。

下面是一些称为它的方法的例子:

代码语言:javascript
复制
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
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28464417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档