最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ASP Eval、Execute、ExecuteGlobal區(qū)別分析

 更新時(shí)間:2020年03月29日 00:14:22   投稿:mdxy-dxy  
Eval、Execute、ExecuteGlobal 這三個(gè)語句(函數(shù))都是執(zhí)行字符串表達(dá)式,不過它們之間又有所不同。

Eval 計(jì)算一個(gè)表達(dá)式的值并返回結(jié)果。

語法:[result = ]eval_r(expression_r)

expression_r 為任意有效 VBScript 表達(dá)式的字符串

示例:

response.Write(eval_r("3+2")) '輸出 5 

"3+2" 使用引號(hào)括起來,表示是一個(gè)字符串,但是在 Eval “眼里”,把它當(dāng)作一個(gè)表達(dá)式 3+2 來執(zhí)行。

<%
a=1
b=2
response.write "a+b"   '會(huì)直接輸出 a+b
response.write eval("a+b") '會(huì)計(jì)算具體的結(jié)果 輸出3
 
'在使用eval的時(shí)候,eval會(huì)盡可的把內(nèi)容里的換成程序里出現(xiàn)的變量,然后計(jì)算出結(jié)果并返回
%>

Execute 執(zhí)行一個(gè)或多個(gè)指定的語句。多個(gè)語句間用冒號(hào)(:)隔開。

execute : 用來執(zhí)行一句或多句的代碼,不一定有返回的結(jié)果

語法:Execute statements

示例:

Execute "response.Write(""abc"")" '輸出 abc
"response.Write(""abc"")" 使用引號(hào)括起來,表示是一個(gè)字符串

但是在 Execute “眼里”,把它當(dāng)作一個(gè)語句 response.Write("abc") 來執(zhí)行。

'比如我們有時(shí)候需要?jiǎng)討B(tài)聲明一個(gè)或多個(gè)的變量:

Dim Str : Str="UserName,Password,LoginTime"
execute("Dim "&Str)

有的人可能要說了,在ASP里,變量聲明不聲明其實(shí)區(qū)別不大的,但實(shí)際上不是這樣的,比如下面這樣一段代碼:

<%
Sub GetData()
    UserName="腳本之家"
    LoginTime="2020-3-29"
End Sub
Dim UserName,LoginTime '先聲明變量
Call GetData()    '再調(diào)用sub過程
Response.write UserName  '這時(shí)才能輸出具體的值,如果不事先聲明變量的話,就會(huì)輸出空
%>

 再來看一個(gè)具體的實(shí)例,了解eval和execute的區(qū)別和用法:

第一個(gè)實(shí)例:

'假如我們有這樣一個(gè)sub過程:
Sub OutTime()
    response.write now()
End Sub
 
'那么在我們要?jiǎng)討B(tài)調(diào)用這個(gè)SUB過程的時(shí)候,只能用execute:
execute("OutTime")
'或者
execute("OutTime()")
 
'如果在這個(gè)時(shí)候用eval,就會(huì)報(bào)錯(cuò),因?yàn)镺utTime過程里,沒有返回值

第二個(gè)實(shí)例:

Function GetTime()
    GetTime=now()
End Function
 
'上面這個(gè)函數(shù),我們要?jiǎng)討B(tài)調(diào)用的話,只能用eval,如果用execute,不會(huì)報(bào)錯(cuò),但也獲取不到具體的內(nèi)容:
execute("GetTime()")
response.write execute("GetTime()") 
'上面這兩種寫法,站長都已親測(cè),輸出的都是空白
 
response.write eval("GetTime()")
response.write eval("GetTime")
'上面這兩種寫法 才能正確的輸出內(nèi)容

ExecuteGlobal 在全局名字空間中執(zhí)行一個(gè)或多個(gè)指定的語句。
語法:ExecuteGlobal statement
示例:

dim c 
c = "全局變量" 
sub S1() 
dim c 
c = "局部變量" 
Execute "response.Write(c)" '輸出 局部變量 
ExecuteGlobal "response.Write(c)" '輸出 全局變量 
end sub 
Execute "response.Write(c)" '輸出 全局變量 
call S1() 

變量 c 既在全局范圍內(nèi)定義,也在函數(shù)范圍內(nèi)定義,Execute 按自己所處的位置來決定使用局部變量還是全局變量,而 ExecuteGlobal 則始終只認(rèn)全局范圍的 c。

總結(jié):

Eval 只執(zhí)行一個(gè)語句 語句可以有也可以沒有返回值
Execute 執(zhí)行一個(gè)或多個(gè)語句 忽略語句的返回值
ExecuteGlobal 執(zhí)行一個(gè)或多個(gè)語句 忽略語句的返回值 全局變量和局部變量同名時(shí)總是使用全局變量

注意:
在 VBScript 中“賦值”與“比較”都是使用“=”,比如“a=b”既可以說是將 b 值賦予 a,也可以說是判斷 a 與 b 是否相等,那么 eval_r("a=b") 是表示賦值還是比較運(yùn)算呢?
這里有個(gè)約定,在 Eval 中,“a=b”總是表示比較運(yùn)算,在 Execute 和 ExecuteGlobal 中,總是表示賦值。

相關(guān)文章

最新評(píng)論

永和县| 平陆县| 仁寿县| 桦南县| 陆河县| 黎川县| 石渠县| 新密市| 建瓯市| 永康市| 横峰县| 化德县| 娱乐| 若尔盖县| 安义县| 手游| 太保市| 广西| 张北县| 九龙城区| 鄄城县| 浙江省| 宣威市| 葫芦岛市| 吴忠市| 南雄市| 仙桃市| 崇仁县| 墨竹工卡县| 门头沟区| 金川县| 高阳县| 天全县| 九寨沟县| 米脂县| 高陵县| 阳原县| 大城县| 多伦县| 亚东县| 讷河市|