JavaScript的eval()函數,javascripteval

來源:互聯網
上載者:User

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函數:

  1. var txt = '{"employees":[' +  
  2. '{"firstName":"Bill","lastName":"Gates" },' +  
  3. '{"firstName":"George","lastName":"Bush" },' +  
  4. '{"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的值,我們的目的達到了。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.