返回列表索引   上一页   下一页
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异常
    返回列表索引   上一页   下一页