在javascript中Eval()函數可以把一個(gè)字符串當作一個(gè)JavaScript表達式一樣去執行它,具體來(lái)說(shuō),就是eval接受一個(gè)字符串類(lèi)型的參數,將這個(gè)字符串作為代碼在上下文環(huán)境中執行,并返回執行的結果。舉個(gè)例子:
var the_unevaled_answer = "2 + 3";
var the_evaled_answer = eval("2 + 3");
alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);
如果你運行這段eval程序, 你將會(huì )看到在JavaScript里字符串"2 + 3"實(shí)際上被執行了。所以當你把 the_evaled_answer的值設成 eval("2 + 3")時(shí), JavaScript將會(huì )明白并把2和3的和返回給the_evaled_answer。這個(gè)看起來(lái)似乎有點(diǎn)傻,其實(shí)可以做出很有趣的事。比如使用eval你可以根據用戶(hù)的輸入直接創(chuàng )建函數。這可以使程序根據時(shí)間或用戶(hù)輸入的不同而使程序本身發(fā)生變化,通過(guò)舉一反三,你可以獲得驚人的效果。
但是在使用eval函數是需要注意兩點(diǎn):
1)它是有返回值的,如果參數字符串是一個(gè)表達式,就會(huì )返回表達式的值。如果參數字符串不是表達式,沒(méi)有值,那么返回“undefined”。
2)參數字符串作為代碼執行時(shí),是和調用eval函數的上下文相關(guān)的,即其中出現的變量或函數調用必須在調用eval的上下文環(huán)境中可用。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。