JavaScript的eval()函數,javascripteval
注意eval( )函數是JavaScript的全域對象,有人會奇怪,不是函數嗎,怎麼是全域對象呢。。。呵呵,因為在JavaScript中函數就是對象,對象也是通過函數方式定義的。
定義和用法
eval() 函數可計算某個字串,並執行其中的的 JavaScript 代碼。
文法
eval(string)
| 參數 |
描述 |
| string |
必需。要計算的字串,其中含有要計算的 JavaScript 運算式或要執行的語句。 |
返回值
通過計算 string 得到的值(如果有的話)。
說明
該方法只接受原始字串作為參數,如果 string 參數不是原始字串,那麼該方法將不作任何改變地返回。因此請不要為 eval() 函數傳遞 String 對象來作為參數。
這裡舉例說明:
<html> <head> </head> <body> <script> var s=new String("1+1");//s是對象 var ss="1+1";//原始字串 alert(eval(s));//結果1+1 alert(eval(ss));//結果2 alert(eval("1+1"));//結果2</script> </body> </html>
eval其他用途:
在解析JSON資料的時候,會用到eval函數:
- var txt = '{"employees":[' +
- '{"firstName":"Bill","lastName":"Gates" },' +
- '{"firstName":"George","lastName":"Bush" },' +
- '{"firstName":"Thomas","lastName":"Carter" }]}';
var obj = eval("("+ txt +")");
在比較新的瀏覽器,提供了原生的JSON支援,而且這種JSON解析更快。
這裡的代碼重要把
var obj = eval("("+ txt +")")
改成
var obj = JSON.parse(txt) //這個是在較新的瀏覽器的情況下
javascript eval什意思?
eval 函數允許 JScript 原始碼的動態執行。例如,下面的代碼建立了一個包含 Date 對象的新變數 now :
eval("var now = new Date();");
傳遞給 eval 方法的代碼執行時的上下文和調用 eval 方法的一樣.
javascript 裡面eval表示的是什函數呀?
eval可以將字串產生語句執行,和SQL的exec()類似。
eval的使用場合是什麼呢?有時候我們預先不知道要執行什麼語句,只有當條件和參數給時才知道執行什麼語句,這時候eval就派上用場了。舉個例子:
我們要做一個function(),功能是輸入網頁中兩個個對象的名稱,然後程式就將這兩個對象的值聯結起來輸出。
function output(a,b)
{
var tmpa,tmpb;
tmpa=document.all.a.value;
tmpb=document.all.b.value;
document.write(tmpa+tmpb);
}
output('input1','input2');
這樣你執行的時候就會提示錯誤“document.all.a不是對象”以及“document.all.b不是對象”。原來javascript把a和b當成對象名稱了,怎樣能讓javascript把a裡面的值作為對象名稱呢?這時候就要用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就會先取出a,b的值,然後和前面的document.all.以及後面的.value組合運行,於是就可以
順利取出input1和input2的值,我們的目的達到了。