ASP Eval、Execute、ExecuteGlobal區別分析

來源:互聯網
上載者:User

Eval 計算一個運算式的值並返回結果。
文法:[result = ]eval_r(expression_r)
expression_r 為任意有效 VBScript 運算式的字串
樣本: 複製代碼 代碼如下:response.Write(eval_r("3+2")) '輸出 5

"3+2" 使用引號括起來,表示是一個字串,但是在 Eval “眼裡”,把它當作一個運算式 3+2 來執行。
Execute 執行一個或多個指定的語句。多個語句間用冒號(:)隔開。
文法:Execute statements
樣本:
Execute "response.Write(""abc"")" '輸出 abc
複製代碼
"response.Write(""abc"")" 使用引號括起來,表示是一個字串
但是在 Execute “眼裡”,把它當作一個語句 response.Write("abc") 來執行。
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 中,總是表示賦值。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.