- eval() 的参数是一个字符串。如果字符串表示的是表达式,eval() 会对表达式进行求值。如果参数表示一个或多个 JavaScript 语句, 那么 eval() 就会执行这些语句。
eval("2 + 2");
- 如果 eval() 的参数不是字符串, eval() 将会将参数原封不动的返回。
eval(new String("2 + 2"));
eval(new String("2 + 2").toString());
- 如果你间接的使用 eval(),比如通过一个引用来调用它,而不是直接的调用 eval 。 从 ECMAScript 5 起,它工作在全局作用域下,而不是局部作用域中。
function test() {
var x = 2, y = 4;
console.log(eval("x + y"));
var geval = eval;
console.log(geval("x + y"));
(0, eval)('x + y');
}
更多例子
var x = 2;
var y = 39;
var z = "42";
eval("x + y + 1");
eval(z);
- 使用 eval 执行一串 JavaScript 语句
如果您定义了一个或者多个值,则会返回最后一个值。没有定义,返回undefined
var x = 5;
var str = "if (x == 5) {console.log('z is 42'); z = 42; x = 420; } else z = 0;";
console.log('x is ', eval(str)); // z is 42 x is 420
- eval 中函数作为字符串被定义需要括号“(”和“)”作为前缀和后缀
var fctStr1 = 'function a() {}'
var fctStr2 = '(function a() {})'
var fct1 = eval(fctStr1)
var fct2 = eval(fctStr2)