在Javascript中Eval函數(shù)的使用

【eval()函數(shù)】?

成都創(chuàng)新互聯(lián)專注于禹州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城建設(shè)。禹州網(wǎng)站建設(shè)公司,為禹州等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

JavaScript有許多小竅門來使編程更加容易。?

其中之一就是eval()函數(shù),這個函數(shù)可以把一個字符串當(dāng)作一個JavaScript表達式一樣去執(zhí)行它。?

舉個小例子:?

var the_unevaled_answer = "2 + 3";?

var the_evaled_answer = eval("2 + 3");?

alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);?

如果你運行這段eval程序, 你將會看到在JavaScript里字符串"2 + 3"實際上被執(zhí)行了。?

所以當(dāng)你把the_evaled_answer的值設(shè)成 eval("2 + 3")時, JavaScript將會明白并把2和3的和返回給the_evaled_answer。?

這個看起來似乎有點傻,其實可以做出很有趣的事。比如使用eval你可以根據(jù)用戶的輸入直接創(chuàng)建函數(shù)。?

這可以使程序根據(jù)時間或用戶輸入的不同而使程序本身發(fā)生變化,通過舉一反三,你可以獲得驚人的效果。?

在實際中,eval很少被用到,但也許你見過有人使用eval來獲取難以索引的對象。?

文檔對象模型(DOM)的問題之一是:有時你要獲取你要求的對象簡直就是痛苦。?

例如,這里有一個函數(shù)詢問用戶要變換哪個圖象:變換哪個圖象你可以用下面這個函數(shù):?

function swapOne()?

{?

var the_image = prompt("change parrot or cheese","");?

var the_image_object;?

if (the_image == "parrot")?

{?

? the_image_object = window.document.parrot;?

}?

else?

{?

? the_image_object = window.document.cheese;?

}?

the_image_object.src = "ant.gif";?

}?

連同這些image標(biāo)記:?

[img src="/stuff3a/parrot.gif" name="parrot"]?

[img src="/stuff3a/cheese.gif" name="cheese"]?

請注意象這樣的幾行語句:?

? ? ??

the_image_object = window.document.parrot;?

它把一個圖象對象敷給了一個變量。雖然看起來有點兒奇怪,它在語法上卻毫無問題。?

但當(dāng)你有100個而不是兩個圖象時怎么辦?你只好寫上一大堆的 if-then-else語句,要是能象這樣就好了:?

function swapTwo()?

{?

var the_image = prompt("change parrot or cheese","");?

window.document.the_image.src = "ant.gif";?

}?

不幸的是, JavaScript將會尋找名字叫 the_image而不是你所希望的"cheese"或者"parrot"的圖象,?

于是你得到了錯誤信息:”沒聽說過一個名為the_image的對象”。?

還好,eval能夠幫你得到你想要的對象。?

function simpleSwap()?

{?

var the_image = prompt("change parrot or cheese","");?

var the_image_name = "window.document." + the_image;?

var the_image_object = eval(the_image_name);?

the_image_object.src = "ant.gif";?

}?

如果用戶在提示框里填入"parrot",在第二行里創(chuàng)建了一個字符串即window.document.parrot. 然后包含了eval的第三?

行意思是: "給我對象window.document.parrot" - 也就是你要的那個圖象對象。一旦你獲取了這個圖象對象,你可以把?

它的src屬性設(shè)為ant.gif. 有點害怕?用不著。其實這相當(dāng)有用,人們也經(jīng)常使用它。?

我們常常在Javascript中間到Eval這個函數(shù),?

有些人覺得這個函數(shù)很奇怪,可以把一些字符串變的功能很強大?

在我們需要將普通的字符串轉(zhuǎn)變成具體的對象的時候,就會用到這個函數(shù)?

eval 函數(shù)對作為數(shù)字表達式的一個字符串進行求值,其語法為:?

eval(expr)?

此處 expr 是一個被求值的字符串參數(shù)。如果該字符串是一個表達式,eval 求該表達式的值;如果該參數(shù)代表一個或多個 JavaScript 語句,那么 eval 執(zhí)行這些語句。eval 函數(shù)可以用來把一個日期從一種格式(總是字符串)轉(zhuǎn)換為數(shù)值表達式或數(shù)字。?

==============================?

Eval 函數(shù)?

功能:先解釋Javascript代碼,然后在執(zhí)行它?

用法:Eval(codeString)?

codeString是包含有Javascript語句的字符串,在eval之后使用Javascript引擎編譯。?

注釋:?

例子:eval(id + "_icon.src="/imgs/collapse_up.gif'");?

id是之前設(shè)定的參數(shù),而在雙引號中的字符串則是需要編譯的?

引用:?

function tophide(id)? ? //id indicates menu?

{?

? ? if (top.topframeset.rows == "31,*")?

? ? {?

? ? ? ? top.topframeset.rows = "86,*";?

? ? ? ? eval(id + "_icon.src="/imgs/collapse_up.gif'");?

? ? ? ? eval(id + "_icon.alt='Collapse The Head'");?

? ? ? ? head.style.display = "block"?

? ? ? ? }?

? ? else?

? ? {?

? ? ? ? top.topframeset.rows = "31,*";?

? ? ? ? eval(id + "_icon.src="/imgs/collapse_down.gif'");?

? ? ? ? eval(id + "_icon.alt='Expand The Head'");?

? ? ? ? head.style.display = "none"?

? ? }?

}

最后給你們推薦一個群,如果你還想提升自己,

歡迎加入Java技術(shù)交流群:659270626

本群提供免費的學(xué)習(xí)指導(dǎo) 提供Spring源碼、MyBatis、Netty、redis,Kafka、MySQL、Zookeeper、Tomcat、Docker、Dubbo、Nginx、分布式、高并發(fā)、性能調(diào)優(yōu)、等架構(gòu)技術(shù)架構(gòu)資料 以及免費的解答

不懂的問題都可以在本群提出來 之后還會有職業(yè)生涯規(guī)劃以及面試指導(dǎo)?

網(wǎng)站欄目:在Javascript中Eval函數(shù)的使用
本文地址:http://muchs.cn/article0/jpicio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站維護網(wǎng)站營銷、品牌網(wǎng)站制作做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)