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

首頁 > 編程 > ASP > 正文

ASP Eval、Execute、ExecuteGlobal區別分析

2020-07-27 12:48:09
字體:
來源:轉載
供稿:網友

Eval 計算一個表達式的值并返回結果。

語法:[result = ]eval_r(expression_r)

expression_r 為任意有效 VBScript 表達式的字符串

示例:

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

"3+2" 使用引號括起來,表示是一個字符串,但是在 Eval “眼里”,把它當作一個表達式 3+2 來執行。

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

Execute 執行一個或多個指定的語句。多個語句間用冒號(:)隔開。

execute : 用來執行一句或多句的代碼,不一定有返回的結果

語法:Execute statements

示例:

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

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

'比如我們有時候需要動態聲明一個或多個的變量:Dim Str : Str="UserName,Password,LoginTime"execute("Dim "&Str)

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

<%Sub GetData()    UserName="武林網"    LoginTime="2020-3-29"End SubDim UserName,LoginTime '先聲明變量Call GetData()    '再調用sub過程Response.write UserName  '這時才能輸出具體的值,如果不事先聲明變量的話,就會輸出空%>

 再來看一個具體的實例,了解eval和execute的區別和用法:

第一個實例:

'假如我們有這樣一個sub過程:Sub OutTime()    response.write now()End Sub '那么在我們要動態調用這個SUB過程的時候,只能用execute:execute("OutTime")'或者execute("OutTime()") '如果在這個時候用eval,就會報錯,因為OutTime過程里,沒有返回值

第二個實例:

Function GetTime()    GetTime=now()End Function '上面這個函數,我們要動態調用的話,只能用eval,如果用execute,不會報錯,但也獲取不到具體的內容:execute("GetTime()")response.write execute("GetTime()") '上面這兩種寫法,站長都已親測,輸出的都是空白 response.write eval("GetTime()")response.write eval("GetTime")'上面這兩種寫法 才能正確的輸出內容

ExecuteGlobal 在全局名字空間中執行一個或多個指定的語句。
語法: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 既在全局范圍內定義,也在函數范圍內定義,Execute 按自己所處的位置來決定使用局部變量還是全局變量,而 ExecuteGlobal 則始終只認全局范圍的 c。

總結:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐山县| 镇赉县| 枝江市| 榕江县| 唐海县| 吴江市| 颍上县| 灵石县| 衡东县| 清流县| 工布江达县| 安庆市| 綦江县| 油尖旺区| 闵行区| 鹤壁市| 辉县市| 鸡泽县| 奇台县| 邛崃市| 菏泽市| 育儿| 新化县| 东辽县| 固原市| 荆州市| 承德市| 大冶市| 柞水县| 房产| 潞城市| 巴林右旗| 四平市| 措勤县| 日喀则市| 泗水县| 土默特右旗| 行唐县| 牙克石市| 桦甸市| 安福县|