zoukankan      html  css  js  c++  java
  • Eval、Execute、ExecuteGlobal

    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 中,总是表示赋值。

    机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年
  • 相关阅读:
    这年头学爬虫还就得会点 scrapy 框架
    【全栈之路】JAVA基础课程十_JAVA虚拟机(20190706v1.1)
    牛客练习赛61
    ERD图
    深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析
    阿里研究员吴翰清:世界需要什么样的智能系统?
    《深入理解 C# (第2版)》
    HtmlAgility 抓取网页上的数据
    abp(net core)+easyui+efcore实现仓储管理系统——入库管理之三存储过程(三十九)
    如何Tomcat完美访问web项目,无需配置“项目名”
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/3031220.html
Copyright © 2011-2022 走看看