eval和new Function构造函数时的区别

eval

eval(codeString)用来执行代码字符串codeString,并且返回最后一个表达式(注意不是声明语句)的值。这里需要注意的是返回的值是表达式的值,比如 'const a =1'和 'a = 1',第一个执行eval返回undefined,第二个返回1,

对于定义函数来说,如果想用eval动态构造函数,那么有两种方式:1.使用箭头函数表达式构造函数,2.使用()将函数function声明语句包裹起来,

var res = eval('a = 1') // 
res // 1

var res = eval('const a = 1') // 
res // undefined

var res = eval(`(data)=>{console.log(data,111)}`)
res // 是函数

var res = eval(`(function(data){console.log(data,111)})`)

new Function

格式:new Function(形参1,形参2,...,函数体)

const fn = new Function('x','y','return x+y')

推荐使用new Function动态构造函数,安全性比eval要高.

共同点:二者构造的函数的作用域都是全局的,可以通过bind,call,apply来修改this的指向

相关推荐

  1. evalnew Function构造函数区别

    2024-07-09 17:16:02       10 阅读
  2. Web中EvalBind

    2024-07-09 17:16:02       32 阅读
  3. 箭头函数普通函数区别

    2024-07-09 17:16:02       17 阅读
  4. 函数指针指针函数区别

    2024-07-09 17:16:02       19 阅读

最近更新

  1. 数组常见的实例方法

    2024-07-09 17:16:02       0 阅读
  2. 精通Gradle发布配置:打造自动化部署的高速公路

    2024-07-09 17:16:02       0 阅读
  3. 力扣283.移动零

    2024-07-09 17:16:02       0 阅读
  4. SAP 如何修改统驭科目类型

    2024-07-09 17:16:02       0 阅读
  5. 部署Mojo模型:生产环境中的智能自动化

    2024-07-09 17:16:02       0 阅读
  6. Linux的shell的date命令

    2024-07-09 17:16:02       0 阅读

热门阅读

  1. Python 获取数组中连续数据的组数

    2024-07-09 17:16:02       10 阅读
  2. 大二暑假 + 大三上

    2024-07-09 17:16:02       9 阅读
  3. Git 常用命令及其作用

    2024-07-09 17:16:02       6 阅读
  4. Docker

    Docker

    2024-07-09 17:16:02      8 阅读