eval可以將字符串生成語(yǔ)句執(zhí)行,和SQL的exec()類似。
eval的使用場(chǎng)合是什么呢?有時(shí)候我們預(yù)先不知道要執(zhí)行什么語(yǔ)句,只有當(dāng)條件和參數(shù)給時(shí)才知道執(zhí)行什么語(yǔ)句,這時(shí)候eval就派上用場(chǎng)了。舉個(gè)例子:
我們要做一個(gè)function(),功能是輸入網(wǎng)頁(yè)中兩個(gè)個(gè)對(duì)象的名稱,然后程序就將這兩個(gè)對(duì)象的值聯(lián)接起來(lái)輸出。
function output(a,b)
{
var tmpa,tmpb;
tmpa=document.all.a.value;
tmpb=document.all.b.value;
document.write(tmpa+tmpb);
}
output('input1','input2');
這樣你執(zhí)行的時(shí)候就會(huì)提示錯(cuò)誤“document.all.a不是對(duì)象”以及“document.all.b不是對(duì)象”。原來(lái)javascript把a(bǔ)和b當(dāng)成對(duì)象名稱了,怎樣能讓javascript把a(bǔ)里面的值作為對(duì)象名稱呢?這時(shí)候就要用eval了,把代碼改成這樣:
function output(a,b)
{
var tmpa,tmpb;
tmpa=eval("document.all."+a+".value");
tmpb=eval("document.all."+b+".value");
document.write(tmpa+tmpb);
}
output('input1','input2');
這樣javascript就會(huì)先取出a,b的值,然后和前面的document.all.以及后面的.value組合運(yùn)行,于是就可以
順利取出input1和input2的值.