如何在javascript中使用匿名函数删除新函数

分享于2022年07月17日 anonymous-function constructor function javascript 问答
【问题标题】:如何在javascript中使用匿名函数删除新函数(How to remove new Function with Anonymous function in javascript)
【发布时间】:2022-07-11 16:40:03
【问题描述】:

我正在尝试用相应的匿名函数替换 eval/new Function。

现有代码 -

var y = 2
var fn = new Function("return" +y)
console.log(fn)

当我打印 fn 输出是

ƒ anonymous(
) {
return2
}

我正在编写的重构代码 -

var y = 2
var fn1 = function()  {return y}
console.log(fn1)

但在这种情况下 fn1 是

ƒ ()  {return y}

任何指针如何使用我自己的匿名函数获得与 fn ƒ anonymous() {return2} 相同的输出。


【解决方案1】:

你不能(至少不使用另一个版本的 eval )。

您可以通过使用闭包获得相同的 效果 (即没有可变的 y )。

var y = 2
var fn1 = function(closure_y) {
  return function() {
    return closure_y;
  }
}(y)
y = 3;
console.log(fn1())