Eval、Execute、ExecuteGlobal 这三个语句(函数)都是执行字符串表达式,不过它们之间又有所不同。

Eval 计算一个表达式的值并返回结果。
语法:[result = ]eval(expression)
expression 为任意有效 VBScript 表达式的字符串
示例:
response.Write(eval("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("a=b") 是表示赋值还是比较运算呢?
这里有个约定,在 Eval 中,“a=b”总是表示比较运算,在 Execute 和 ExecuteGlobal 中,总是表示赋值。

ASP之Eval、Execute、ExecuteGlobal区别分析的更多相关文章

  1. ASP.NET Eval四种绑定方式 及详解

    1.1.x中的数据绑定语法 <asp:Literal id="litEval2" runat="server" Text='<%#DataBinde ...

  2. ExecutorService中submit()和execute()的区别

    在使用java.util.concurrent下关于线程池一些类的时候,相信很多人和我一样,总是分不清submit()和execute()的区别,今天从源码方面分析总结一下. 通常,我们通过Execu ...

  3. ASP.NET Eval四种绑定方式

    1.1.x中的数据绑定语法 <asp:Literal id="litEval2" runat="server" Text='<%#DataBinde ...

  4. [Asp.net 5] DependencyInjection项目代码分析-目录

    微软DI文章系列如下所示: [Asp.net 5] DependencyInjection项目代码分析 [Asp.net 5] DependencyInjection项目代码分析2-Autofac [ ...

  5. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(5)(IEnumerable<>补充)

    Asp.net 5的依赖注入注入系列可以参考链接: [Asp.net 5] DependencyInjection项目代码分析-目录 我们在之前讲微软的实现时,对于OpenIEnumerableSer ...

  6. C++中关于[]静态数组和new分配的动态数组的区别分析

    这篇文章主要介绍了C++中关于[]静态数组和new分配的动态数组的区别分析,很重要的概念,需要的朋友可以参考下 本文以实例分析了C++语言中关于[]静态数组和new分配的动态数组的区别,可以帮助大家加 ...

  7. Java中Comparable和Comparator接口区别分析

    Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...

  8. 【多线程 5】线程池的类型以及submit()和execute()的区别

    就跟题目说的一样,本篇博客,本宝宝主要介绍两个方面的内容,其一:线程池的类型及其应用场景:其二:submit和execute的区别.那么需要再次重申的是,对于概念性的东西,我一般都是从网上挑选截取,再 ...

  9. Oracle nvchar2和varchar2区别分析

    Oracle nvchar2和varchar2区别分析: [注意]VARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容.VA ...

随机推荐

  1. php 关联数组

    <?php header("content-type:text/html;charset=utf8");$fruit = array(    'apple'=>&quo ...

  2. assign retain copy

    举个例子: NSString *houseOfMM = [[NSString alloc] initWithString:'装梵几的三室两厅']; 上面一段代码会执行以下两个动作:  1 在堆上分配一 ...

  3. aws部署从无到有(二)windows管理aws

    1 AMI正常启动后会进入下面页面 2 远程链接点击如何连接至您的 Linux 实例进入下载页 Windows下使用 PuTTY连接到 Linux 实例 http://www.chiark.green ...

  4. javascript基础(四)语句

    原文http://pij.robinqu.me/ for/in语句也使用for关键字,但它是和常规的for循环完全不同的一类循环.语法: for (variable in object) statem ...

  5. jquery拖拽效果

    <!doctype html><html lang="en"><head> <meta charset="utf-8" ...

  6. JSON.parse()和JSON.stringify()&&traditional(ajax请求)的作用

    parse是一个字符串中解析出json对象,如 var str = '{"name":"haizeiwang"}' 结果: JSON.parse(str) na ...

  7. B - ACboy needs your help(动态规划,分组背包)

    B - ACboy needs your help Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  8. python 日历

    上章总结了python中time模块的使用,这次总结日历模块 calendar >>> import calendar >>> cal = calendar.mon ...

  9. VS2013程序打包部署详细图解

      目录(?)[+]   新建项目 FILE –> New –> Project,如下图所示:  注意:如果 InstallShield Limited Edition Project 显 ...

  10. perl中的pack与unpack

    这个pack, unpack在 "perl语言编程" 有介绍 看起来很复杂 #把一个字符串转为十六进制格式 my $source = 'abcd'; unpack('H*', $s ...