eval( )
|
执行字符串中的JavaScript代码
|
可用性
JavaScript 1.0; JScript 1.0; ECMAScript v1
语法
eval(code)
参数
-
code
-
执行字符串中的JavaScript代码。
返回值
计算code得到的值(如果存在的话)。
抛出
-
SyntaxError
-
说明code中没有合法的JavaScript表达式或语句。
-
EvalError
-
说明非法调用了eval(),例如使用的标识符不是“eval”。参阅下面描述的对该
函数的限制。
-
其他异常
-
如果传递给eval()的JavaScript代码生成了一个异常,eval()将把那个异常传递给调用者。
描述
eval()是全局方法,它将执行含有JavaScript代码的字符串。如果code含有一个表达式,eval()将计算这个表达式,并返回它的值。如果code含有一个或多个JavaScript语句,eval()将执行这些语句,如果最后一个语句有返回值,它还会返回这个值。如果code没有返回任何值,eval()将返回undefined。最后,如果code
抛出了一个异常,eval()将把这个异常传递给调用者。
虽然eval()给JavaScript语言提供了非常强大的功能,但在实际程序中极少用它。常见的用法是编写作为递归的JavaScript解释器的程序,或者编写动态生成并计算
JavaScript代码的程序。
大部分使用字符串参数的JavaScript函数和方法都会接受其他类型的参数,在继续操作之前把这些参数值转换成字符串。但eval()的行为不是这样。如果code参数不是原始的字符串,它将不作任何改变地返回。所以,要注意,当打算传递给eval()原始字符串值时,不要粗心地给它传递String对象。
考虑到实现的效率,ECMAScriptv3标准给eval()方法的使用加上了一条与众不同的限制。如果试图覆盖eval属性或把eval()方法赋予另一个属性,并通过该属性调用它,则ECMAScript实现允许抛出一个EvalError异常。
示例
eval("1+2"); // 返回 3
// 用客户端JavaScrlpt的方法提示用户输入表达式并显示出计算结果
// 详见客户端的方法Window.alert()和Window.prompt()
try {
alert("Result: " + eval(prompt("Enter an expression:","")));
}
catch(exception) {
alert(exception);
}
var myeval = eval; // 抛出EvalError异常
myeval("1+2"); //抛出EvalError异常
|