【问题标题】:How to remove new Function with Anonymous function in javascript如何在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} 相同的输出。

【问题讨论】:

    标签: javascript function constructor anonymous-function


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-18
      • 2011-08-11
      • 2022-08-02
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多