国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript中eval()函數(shù)用法詳解

2019-11-20 11:01:14
字體:
供稿:網(wǎng)友

eval() 函數(shù)計算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行。

如果參數(shù)是一個表達式,eval() 函數(shù)將執(zhí)行表達式。如果參數(shù)是Javascript語句,eval()將執(zhí)行 Javascript 語句。

語法

復制代碼 代碼如下:

eval(string)

參數(shù) 描述
string 必需。要計算的字符串,其中含有要計算的 JavaScript 表達式或要執(zhí)行的語句。

eval()函數(shù)用法詳解:

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

此函數(shù)可以接受一個字符串str作為參數(shù),并把此str當做一段javascript代碼去執(zhí)行,如果str執(zhí)行結(jié)果是一個值則返回此值,否則返回undefined。如果參數(shù)不是一個字符串,則直接返回該參數(shù),實例如下:

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

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

復制代碼 代碼如下:

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

以上內(nèi)容簡單介紹了eval()函數(shù)的用法,比較容易理解。此函數(shù)最讓人感到困惑的是關(guān)于它的作用域問題,下面就結(jié)合實例來介紹一下相關(guān)內(nèi)容,先看一段代碼實例:

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

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

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

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

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(),則使用此函數(shù),不支持則使用window.eval(),這樣就可以解決IE8和IE8以下瀏覽器的問題。

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 龙胜| 承德县| 萍乡市| 大城县| 七台河市| 牟定县| SHOW| 富源县| 星座| 济宁市| 崇左市| 金昌市| 呼和浩特市| 澄城县| 灵川县| 株洲市| 杭州市| 霍州市| 县级市| 祁连县| 乐亭县| 枣庄市| 淳化县| 逊克县| 海丰县| 嘉义市| 肃宁县| 西藏| 林芝县| 北海市| 东莞市| 突泉县| 乌拉特前旗| 喜德县| 三江| 瑞昌市| 霍邱县| 宁明县| 汕尾市| 康定县| 甘孜县|