DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript中eval()函數用法詳解
JavaScript中eval()函數用法詳解
編輯:關於JavaScript     

eval() 函數計算 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()函數用法詳解,希望大家喜歡。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved