eval
2012-05-11 17:15 呦菜 阅读(520) 评论(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); }