代码改变世界

eval

2012-05-11 17:15  呦菜  阅读(534)  评论(0编辑  收藏  举报

eval()

执行字符串中的JavaScript代码

摘要:

eval(code)

参数:

code:  字符串,含有要计算的JavaScript表达式或要执行的语句。

返回值:

计算code得到的值(如果存在的话)。

抛出:

SyntaxError:   说明code中没有合法的JavaScript表达式或语句。

EvalError:说明非法调用了eval(),例如使用的标识符不是"eval"。

其他异常:如果传递给eval()的JavaScript代码生成一个异常,eval()将把那个异常传递给调用者。

描述:

eval()是全局方法,它将执行一个JavaScript代码的字符串。

如果code含有一个表达式,eval()将计算这个表达式,并返回它的值。例子:

document.write(eval("2+3"));  //  5

如果code含有一个或多个JavaScript语句,eval()将执行这些语句,如果最后一个语句有返回值,它会返回这个值。如果code没有返回值,eval()将返回undefined。例子:

eval("x=10;y=20;document.write(x*y)"); // 200

 

虽然eval()给JavaScript语言提供了非常强大地功能,但在实际程序中极少用它。常见的用法是编写作为递归的JavaScript解释器的程序,或者编写动态生成并计算JavaScript代码程序。

 

大部分使用字符串参数的javaScript函数和方法都会接受其它类型的参数,在继续操作之前把这些参数值转换成字符串。但是eval()的行为不是这样的。如果code参数不是原始的字符串,它将不作任何改变的返回

考虑到实现的效率,ECMAScript v3标准给eval()方法的使用加上了一条与众不同的限制。如果试图覆盖eval属性或者把eval()方法赋予另一个属性,并通过该属性调用它,则ECMAScript实现容许抛出一个EvalError异常.

例子:  检验eval的合法性

try{
    alert("Result:" + eval(prompt("Enter an expression:","")));
}
catch(exception){
    alert(exception);
}