使用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參數的方式),調用者無需知道調用的函數的名稱,只要得到函數名字符串,即可調用,所以比較靈活。