解释
**eval()**
函数会将传入的字符串当做 JavaScript 代码进行执行。
console.log(eval('2 + 2'));
// expected output: 4
console.log(eval(new String('2 + 2')));
// expected output: 2 + 2
console.log(eval('2 + 2') === eval('4'));
// expected output: true
console.log(eval('2 + 2') === eval(new String('2 + 2')));
// expected output: false
eval(string)
参数
string
一个表示 JavaScript 表达式、语句或一系列语句的字符串。表达式可以包含变量与已存在对象的属性。
返回值
返回字符串中代码的返回值。如果返回值为空,则返回 undefined
。
描述
eval()
是全局对象的一个函数属性。eval()
的参数是一个字符串。如果字符串表示的是表达式,eval()
会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句,那么eval()
就会执行这些语句。不需要用 eval()
来执行一个算术表达式:因为 JavaScript 可以自动为算术表达式求值。
如果你以字符串的形式构造了算术表达式,那么可以在后面用 eval()
对它求值。例如,假设你有一个变量 x
,您可以通过将表达式的字符串值(例如 3 * x + 2
)赋值给一个变量,然后在你的代码后面的其他地方调用 eval()
,来推迟涉及 x
的表达式的求值。
如果 eval()
的参数不是字符串, eval()
会将参数原封不动地返回。在下面的例子中,String
构造器被指定,而 eval()
返回了 String
对象而不是执行字符串。