使用JS 中的eval函數(shù),可以將JS字符串作為JS表達(dá)式進(jìn)行執(zhí)行。
將下列JS代碼保存為1.js
function f(num,callback){
//eval()函數(shù),這個(gè)函數(shù)可以把一個(gè)字符串當(dāng)作一個(gè)JavaScript表達(dá)式一樣去執(zhí)行它。
eval(callback+"('"+num +"')");
}
再定義一個(gè)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>無(wú)標(biāo)題文檔</title>
<script type="text/javascript">
function dosome(num){
if(num) alert("未及格!");
else
if(num<=90) alert("該生成績(jī)優(yōu)良!");
else alert("該生成績(jī)優(yōu)秀!");
}
function test(){
var num = document.getElementById("score").value;
f(num,"dosome");
}
</script>
</head>
<body>
<p>
eval示例:
</p>
請(qǐng)輸入學(xué)生成績(jī)
<input type="text" id="score"\>
<input type="button" onClick="test()" value=" 看看結(jié)果">
</body>
</html>
然后打開test.html,可以看到我們調(diào)用了傳過去的dosome()函數(shù),使用eval函數(shù)必須保證字符串表示的JS表達(dá)式,在當(dāng)前頁(yè)面有效。
我們可以通過幀的方式來用eval執(zhí)行任意可訪問的幀的JS代碼。也可以通過打開子窗體的方式,是父窗體和子窗體的JS代碼能夠相互調(diào)用,
而且我們只要傳入函數(shù)名字符串(無(wú)論何種方式,不如通過url參數(shù)的方式),調(diào)用者無(wú)需知道調(diào)用的函數(shù)的名稱,只要得到函數(shù)名字符串,即可調(diào)用,所以比較靈活。