使用JS 中的eval函数,可以将JS字符串作为JS表达式进行执行。
将下列JS代码保存为1.js
function f(num,callback){
//eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
eval(callback+"('"+num +"')");
}
再定义一个test.html,保存到和1.js相同的目录
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script src="1.js" type="text/javascript"><script>
<title>无标题文档</title>
<script type="text/javascript">
function dosome(num){
if(num) alert("未及格!");
else
if(num<=90) alert("该生成绩优良!");
else alert("该生成绩优秀!");
}
function test(){
var num = document.getElementById("score").value;
f(num,"dosome");
}
</script>
</head>
<body>
<p>
eval示例:
</p>
请输入学生成绩
<input type="text" id="score"\>
<input type="button" onClick="test()" value=" 看看结果">
</body>
</html>
然后打开test.html,可以看到我们调用了传过去的dosome()函数,使用eval函数必须保证字符串表示的JS表达式,在当前页面有效。
我们可以通过帧的方式来用eval执行任意可访问的帧的JS代码。也可以通过打开子窗体的方式,是父窗体和子窗体的JS代码能够相互调用,
而且我们只要传入函数名字符串(无论何种方式,不如通过url参数的方式),调用者无需知道调用的函数的名称,只要得到函数名字符串,即可调用,所以比较灵活。