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       30 阅读
  2. Web中EvalBind

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

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

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

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 17:16:02       51 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 17:16:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 17:16:02       44 阅读
  4. Python语言-面向对象

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

热门阅读

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

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

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

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

    Docker

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