解释

**eval()** 函数会将传入的字符串当做 JavaScript 代码进行执行。

  1. console.log(eval('2 + 2'));
  2. // expected output: 4
  3. console.log(eval(new String('2 + 2')));
  4. // expected output: 2 + 2
  5. console.log(eval('2 + 2') === eval('4'));
  6. // expected output: true
  7. console.log(eval('2 + 2') === eval(new String('2 + 2')));
  8. // expected output: false
  1. eval(string)

参数

string一个表示 JavaScript 表达式、语句或一系列语句的字符串。表达式可以包含变量与已存在对象的属性。

返回值

返回字符串中代码的返回值。如果返回值为空,则返回 undefined

描述

eval() 是全局对象的一个函数属性。
eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval() 就会执行这些语句。不需要用 eval() 来执行一个算术表达式:因为 JavaScript 可以自动为算术表达式求值。
如果你以字符串的形式构造了算术表达式,那么可以在后面用 eval()对它求值。例如,假设你有一个变量 x,您可以通过将表达式的字符串值(例如 3 * x + 2)赋值给一个变量,然后在你的代码后面的其他地方调用 eval(),来推迟涉及 x 的表达式的求值。
如果 eval() 的参数不是字符串, eval() 会将参数原封不动地返回。在下面的例子中,String 构造器被指定,而 eval() 返回了 String 对象而不是执行字符串。