Function构造函数的应用


构造函数

new Function() 创建了一个新的Function对象。直接调用此构造函数可以动态创建函数,但会遇到与eval 类似的安全问题和性能问题。与eval不同的是,new Function() 不会执行代码,而是返回一个函数,并且其作用域只在全局上。

Function的arguments

new Function('a', 'b', 'return a + b')

以上代码中共有三个参数,其中return a + b是函数体,ab是参数声明。
其含义是顺序声明两个参数ab,在函数体中使用这两个参数进行运算,并返回结果。

function anonymous(a, b) {
    return a + b
}

这段代码是构造函数的返回结果,可见此处构建了一个匿名函数,带有两个参数ab,函数体是return a + b

应用场景

其应用场景基本与eval等同,但Function构造函数由于不是立即执行,我们可以更灵活的选择执行时机。

  • 重用远程代码片段
  • 构建隔离作用域
© 2024 Hogan Hu