我遇到了如下代码:
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/