javascript - 使用 new 关键字声明函数并在 javascript 中自行调用它

标签 javascript function-declaration function-constructor

我遇到了如下代码:

 const tempFunc = exp => {
  return new Function(`return ${exp}`)()
 }

第一个问题: 是自调用函数并返回它吗? tempFunc 到底返回什么?

第二个问题: 如果我们调用该函数:

let result=tempFunc('3+2')

结果是5,如何转换字符串并计算结果?

最佳答案

当您调用 tempFunc('3+2') 时,它会返回 new Function("return 3+2")(),这将创建一个函数 (function() { return 3+2 };),然后调用该函数。

相反,如果 tempFunc 看起来像这样:

const tempFunc = exp => {
  return new Function(`return ${exp}`);
 }

然后它只会返回未调用的新函数,您必须单独调用它:tempFunc('3+2')();

函数构造函数

函数构造函数(new Function())非常有趣;您基本上可以告诉它第一个 n 个参数需要哪些参数,最后一个参数是函数体。在您的示例中,我们的新函数没有参数,但我们可以创建一个带有参数的函数:

const tempFunc = num => {
  return new Function('x', `return x + ${num}`)(2);
}

tempFunc(3);
// 5

关于javascript - 使用 new 关键字声明函数并在 javascript 中自行调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65523062/

相关文章:

javascript - 获取数据后返回 JavaScript

javascript 日期验证 - 检查两个日期

c++ - 没有明显好处的功能声明

c++: 解释这个函数声明

C++:为什么在另一个函数中允许函数声明而不是函数定义?

javascript - 创建 javascript 构造函数时出现语法错误

javascript - 如何操作对象原型(prototype)的属性?

javascript - 检查是否存在特定的隐藏 div,如果不存在则创建一个

javascript - RxJS:如何让一个 Observer 处理多个 Observables?

JavaScript 构造函数、原型(prototype)附加方法和 'this'