生存期(lifetime):就是在脚本运行时,变量在内存中存在且能使用的时间。

变量只有在它的作用域内才有效。一个过程级作用域的变量只有在运行该过程时才有效。当过程结束时,保存该变量的内存就会被释放,就像不存在这个变量一样。同样,脚本级作用域的变量只有在脚本运行时才有效。类似的,类级作用域的变量只有在其它代码使用了基于这个类的对象时才有效。

通过限制变量的作用域,就能限制变量的生存期。这里有一个要时刻记住的重要原则:必须要尽可能地限制变量的生存期和作用域。因为变量会消耗内存,以及操作系统和脚本引擎的资源,只要变量有效就需要这些资源。在使用变量的过程内部声明变量,就能在该过程没有运行时节约该变量所需的资源。

但实际上,资源消耗并不是限制变量作用域的最重要原因;限制作用域可以减少程序的错误,并提高代码的可理解性和可维护性。如果脚本中有多个过程和函数,而所有的变量都是声明为脚本级的,那这些过程和函数就都能修改这些变量。这种情况下任何代码都能随时修改变量,程序员要维护这种代码就很困难。

      看一下这个说明变量作用域和生存期的例子:

?
1
2
3
4
5
6
7
8
9
10
Option Explicit
Private DateToday
DateToday = Date
MsgBox "明天是:" & AddOneDay(DateToday)
   
Function AddOneDay(DateAny)
     Dim DateResult
     DateResult = DateAdd( "d" , 1, DateAny)
     AddOneDay = DateResult
End Function

这个脚本有一个AddOneDay()函数。用Dim在函数内部声明的变量 DateResult 的作用域是过程级的,这就说对于函数外部的代码该变量无效。而变量 DateToday 使用Private声明的,有脚本级的作用域。变量 DateResult 只有在AddOneDay()函数运行时才被激活,而 DateToday 在整个脚本的生存期内都是激活的。

VBS基础篇 - 变量(4) - 变量的存活期相关推荐

  1. TensorFlow2.4 开发 基础篇① 张量和变量 (1)

         TensorFlow2.4 开发 基础篇① 张量和变量(Tensor) 文章会不断更新,喜欢的小伙伴可以帮博主点个赞哟("'▽'") 文章目录 前言 1. 变量 1.1 ...

  2. VBS基础篇 - wscript 对象

    VBS基础篇 - wscript 对象 一.wscript对象 描述:提供对 Windows 脚本宿主对象模型根对象的访问. 详述:WScript 对象是 Windows 脚本宿主对象模型层次结构的根 ...

  3. VBS基础篇 - 内置函数

    VBS基础篇 - 内置函数 Date/Time 函数 函数 描述 CDate 把有效的日期和时间表达式转换为日期(Date)类型. Date 返回当前的系统日期. DateAdd 返回已添加指定时间间 ...

  4. VBS基础篇 - 常量

    VBS基础篇 - 常量 常量:指的是在程序运行过程中其值保持不变的量,它用来保存固定不变的数值,字符串等常数 . 常量的定义:在vbscript中使用使用 Const 指令可以创建名称具有一定含义的字 ...

  5. VBS基础篇 - Dictionary对象

    VBS基础篇 - Dictionary对象 Dictionary是存储数据键和项目对的对象,其主要属性有Count.Item.Key,主要方法有Add.Exists.Items.Keys.Remove ...

  6. 菜鸟学习笔记:Java基础篇2(变量、运算符、流程控制语句、方法)

    菜鸟学习笔记:Java基础篇2 变量 基本概念 变量作用域 final关键字 运算符 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 运算符优先级 Java三种流程控制语句 顺序 ...

  7. VBS基础篇 - 变量(6) - 数组变量

    只包含一个值的变量称为标量变量. 有时候为了方便将一组相关值赋给一个变量,则成为数组变量. 区别标量与数组的唯一方式是:声明时数组变量名后面带有括号(). 接下来我们看看怎样声明一维数组及多维数组: ...

  8. Activiti7工作流引擎:基础篇(七) 流程变量

    不要指望别人能帮你多少,人生事事物物都得靠自己. 一:简介 流程变量就是if(条件)中使用到的变量用于参与条件表达式的计算. 变量都是有作用域的,在程序中方法内部的变量是属于局部变量,方法外的变量属于 ...

  9. VBS基础篇 - 循环语句(1) - Do 循环

    循环用于重复执行一组语句.循环可分为三类:一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句. 在 VBScript 中可使用下 ...

最新文章

  1. (C++)1002 写出这个数
  2. Latex中的插入表格
  3. 批阅论文和作业Python程序助手
  4. 鸿蒙系统的功能如何,华为鸿蒙系统发布会,这个功能怎么那么像小米MIUI的
  5. codevs 2612 最有分解方案 (贪心)
  6. python和perl区别_对比平台--Perl与Python之间的差异
  7. 卸载64位python3.6再安装32位python3.6
  8. Linux常用命令笔记---故障排除
  9. [BAT][JAVA]定时任务之-Quartz使用篇(通过这个配置可以知道在做Quartz的时候需要的jar文件/Cron表达式使用语法/常用Cron表达式)
  10. vs2017常量文本字符串无法转换成char*
  11. python每日经典算法题5(基础题)+1(较难题)
  12. java cookie 永久_java web中cookie的永久创建与撤销
  13. SQL反模式学习笔记1 开篇
  14. charts 画折线图
  15. 应用随机过程张波商豪_应用随机过程张波课后答案
  16. 群晖218J搭建VLMCSD
  17. Android内存管理的原理--进程管理
  18. 基于cobra的go语言命令行解析器
  19. 【基础篇】Linux的目录结构
  20. 如何在win10系统找到开机时漂亮的壁纸

热门文章

  1. Git: 'not something we can merge'
  2. 删除后清空回收站的资料找回办法
  3. bshare网站实现分享
  4. 摩客怎么设置安卓的dp_Z轴拆分法:故事还得从安卓应用图标讲起
  5. 天龙八部中无名老僧的由来
  6. 全美猎头公司排名 2005
  7. 另一个jar包引不了_【夜听三生】知己,是相遇另一个自己
  8. 计算机课例研究方案设计,大学计算机基础案例教学与教学案例设计.doc
  9. 产品经理初任职之心得体会
  10. Winform编程中的treeview控件