动态执行代码的几种方式

2020/01/03 Javascript 共 589 字,约 2 分钟

动态执行代码大概有几种方式:

1、动态创建script 标签

const script = document.createElement('script');
script.innerText = `console.log('hola')`;
document.body.append(script);

2、通过new Function语法。详细说明

需要注意new Function的形式执行代码时的作用域为全局作用域,无论在什么地方调用执行,都一样。

try {
  // 可以直接传入函数体调用执行
  new Function(`console.log('hola')`)();
  // 可以传递多个参数
  new Function('arg1', 'arg2', `console.log(Array.prototype.join.apply(arguments))`)('hola', 'jico');
  // 可以使用剩余参数运算符
  new Function('...arg', `console.log(arg.join(', '))`)('hola', 'jico');
} catch(e) {
  throw new Error(e)
}

3、eval

需要注意eval代码执行时的作用域为当前作用域,可以访问到执行时所在函数中的局部变量。

const name = 'jico';
const strFn = `console.log(name)`;
eval(strFn);

Search

    Table of Contents