JavaScript中eval()函數用法詳解_javascript技巧

來源:互聯網
上載者:User

eval() Function Compute JavaScript 字串,並把它作為指令碼代碼來執行。

如果參數是一個運算式,eval() 函數將執行運算式。如果參數是Javascript語句,eval()將執行 Javascript 語句。

文法

複製代碼 代碼如下:

eval(string)

參數 描述
string 必需。要計算的字串,其中含有要計算的 JavaScript 運算式或要執行的語句。

eval()函數用法詳解:

此函數可能使用的頻率並不是太高,但是在某些情況下具有很大的作用,下面就介紹一下eval()函數的用法。

此函數可以接受一個字串str作為參數,並把此str當做一段javascript代碼去執行,如果str執行結果是一個值則返回此值,否則返回undefined。如果參數不是一個字串,則直接返回該參數,執行個體如下:

eval("var a=1");//聲明一個變數a並賦值1。eval("2+3");//執行加運算,並返回運算值。eval("mytest()");//執行mytest()函數。eval("{b:2}");//聲明一個對象。

在以上代碼特別注意的是,最後一個語句是聲明了一個對象,如果想返回此對象,則需要在對象外面再嵌套一層小括弧,如下:

複製代碼 代碼如下:

eval("({b:2})");

以上內容簡單介紹了eval()函數的用法,比較容易理解。此函數最讓人感到困惑的是關於它的範圍問題,下面就結合執行個體來介紹一下相關內容,先看一段代碼執行個體:

function a(){  eval("var x=1");  console.log(x); } a(); console.log(x); 

在上面的代碼中,第一個alert()函數能夠彈出1,而第二個會因為x未定義而報錯。
由以上表現可以得出,eval()函數並不會建立一個新的範圍,並且它的範圍就是它所在的範圍。這在所有主流瀏覽器都是如此,但是有時候需要將eval()函數的範圍設定為全域,當然可以將eval()在全域範圍中使用,但是往往實際應用中,需要在局部範圍使用具有全域範圍的此函數,這個時候可以用window.eval()的方式實現,例如以上代碼可以改造如下:

function a(){  window.eval("var x=1");  console.log(x); } a(); console.log(x); 

在上面的代碼中,兩個alert()語句都能夠正常彈出1。但是此中方式在標準瀏覽器中是可以的,但是在IE8和IE8以下瀏覽器中的表現依然和eval()一樣,範圍是它們所在的範圍。這個時候可以使用IE瀏覽器專屬的window.execScript()解決IE8和IE8瀏覽器的問題。為了實現相容所有主流瀏覽器,把代碼改造如下:

function a(){  if(window.execScript){   window.execScript("var x=1");  }  else{   window.eval("var x=1");  }  console.log(x); } a(); console.log(x); 

如果瀏覽器支援window.execScript(),則使用此函數,不支援則使用window.eval(),這樣就可以解決IE8和IE8以下瀏覽器的問題。

以上內容是小編給大家分享的JavaScript中eval()函數用法詳解,希望大家喜歡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.