【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)