VBScript中变量作用域

下午在写程序的时候,碰到个变量重定义的问题,具体是在一个函数中的两个地方定义了相同的变量,两个变量分别放在IF语句的两部分中,本来以为这两次定义在语句中不同的块,应该没有影响,然而在运行中IIS却提示变量重定义,把重复定义去掉即正确。

解决了问题之后突然想到在Fdream的blog看过一篇文章《JavaScript变量无块级作用域》,似乎这两个是差不多的,在VBScript中变量同样没有块级作用域。

再次去看了那篇文章之后我也做了下试验,得到结果:在VBScript中,函数中定义的变量的作用域是整个函数,而不是块级,不管这个变量是在函数中哪个位置定义的。因此,函数中一个变量不管在函数的哪个位置定义,它在整个函数中都可以使用。

下面用一些例子来说明这个问题。

复制代码 代码如下:

Option Explicit

Sub foo()

    Dim var

    var="hello,world!"

    MsgBox var

End Sub

Call foo()

下面的代码跟上面的代码等效,但是var的定义放在了函数的最后:

复制代码 代码如下:

Option Explicit

Sub foo()

    var="hello,world!"

    MsgBox var

    Dim var

End Sub

Call foo()

下面的例子说明变量不管在哪定义,在整个函数中都是可以使用的,当然如果把定义的位置放的特殊一点有利于代码的清晰,阅读起来比较方便,修改时也比较方便。

复制代码 代码如下:

Option Explicit

Sub foo()

    Dim var1

    var1="YES"

    MsgBox "var1: "&var1&vbCrLf&"var2: "&var2

    IF var1="YES" Then

        Dim var2

        var2="NO"

    End IF

    MsgBox "var1: "&var1&vbCrLf&"var2: "&var2

End Sub

Call foo()

在ASP开发中,写一个函数时通常的做法是变量到用时才定义,虽然变量的作用域与定义的位置无关,不过我觉得还是写在变量使用之前比较好,以后改起代码来比较方便,不至于修改了一段代码之后还要翻到函数头去修改变量定义。

时间: 2024-09-24 04:54:35

VBScript中变量作用域的相关文章

VBScript中变量作用域_ASP基础

下午在写程序的时候,碰到个变量重定义的问题,具体是在一个函数中的两个地方定义了相同的变量,两个变量分别放在IF语句的两部分中,本来以为这两次定义在语句中不同的块,应该没有影响,然而在运行中IIS却提示变量重定义,把重复定义去掉即正确. 解决了问题之后突然想到在Fdream的blog看过一篇文章<JavaScript变量无块级作用域>,似乎这两个是差不多的,在VBScript中变量同样没有块级作用域. 再次去看了那篇文章之后我也做了下试验,得到结果:在VBScript中,函数中定义的变量的作用域

局部变量-javascript中变量作用域的问题

问题描述 javascript中变量作用域的问题 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

关于javascript中变量作用域理解

现在就结合网上的一篇文章在重新回顾下作用域这个东西吧. 作用域和上下文并不是同一个东西,很多人可能会把它搞混.每一个函数调用都联系着一个作用域和一个上下文.根本上来说,作用域是基于函数的而上下文是基于对象的.换句话说,作用域与函数调用是能够获取的变量有联系,它对与每一次调用来说都是独一无二的.上下文常常代表this变量的值,它指向"拥有"当前执行的这段代码的对象. 变量作用域 一个变量的作用域是程序源代码中定义这个变量的区域.全局变量拥有全局作用域,在js代码里的任何地方都是有定义的.

JavaScript中变量作用域详细介绍

  以下变量具有全局作用域:     1.所有定义在最外层的变量(非函数体内部)具有全局作用域.     2.未定义直接赋值的变量,系统会把它声明为全局作用域.     3.所有window对象的属性具有全局作用域. 以下变量具有函数作用域   1. 在函数体内部用var定义的变量,这里要注意一点,只要是在函数里定义的变量,就算是在最       后一句定义,该变量也拥有整个函数的作用域.但是它的赋值是等到运行到那一句代码以         后才赋值的!!!   特别应该说明的一点是,作用域是层

php中变量作用域和超级全局变量介绍

一.变量的赋值 变量声明后就可以给其赋值,有两种方式:值赋值和引用赋值. 1.值赋值 $color = "red" ; $sum = 12+"15" ; /* $sum = 27 */ 2. 若希望两个变量指向一个值的同一个副本,则需要通过引用赋值. 引用赋值 所创建的变量与另一个变量引用的内容相同,如果多个变量引用了同一个内容,修改其中任意一个变量,在其余的变量上都将有所反映. 例子: <?php教程 $value1 = "hello"

Javascript 变量作用域 两个可能会被忽略的小特性_javascript技巧

也许有些高手早已知道了,但是我觉得这两个东西还是有一些价值的,所以拿到这里和大家分享一下吧. 有如下代码: 复制代码 代码如下: <script type="text/javascript" > function test() { with (location) { var temp = "an url"; } alert(temp); } test(); </script>     调用这个函数会输出什么呢? 也许会认为它会弹出undefi

深入探究Python中变量的拷贝和作用域问题

  这篇文章主要介绍了Python中变量的拷贝和作用域问题,包括一些赋值.引用问题,以及相关函数在Python2和3版本之间的不同,需要的朋友可以参考下 在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个问题吧: 在Python中,令values=[0,1,2];values[1]=values,为何结果是[0,[...],2]? ? 1 2 3

javascipt中的作用域与变量

1.JavaScript的变量类型 JavaScript的变量分为基本类型和引用类型.基本数据类型是直接存在栈空间的简单数据段,这种类型直接将值保存在内存的某个位置.引用数据类型存储的是指向实际存储于堆内存中的对象的地址. JavaScript中的基本数据类型共有五种:Number,Null,Undefined,Boolean和String.需要注意的是,js中的String是基本数据类型. 对于基本类型变量的访问,是按值访问的,而对于引用变量的访问是按引用访问的. 2.动态属性 对于引用数据类

浅谈php中include文件变量作用域_php实例

在php中我们有时候需要include一个文件.比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件就可以,但是这只是我的意淫而已. 写完后发现在模板中所有的变量都提示未定义.通过各种研究和查找资料,总结了include文件时的几种情况下的作用域. 第一种情况:A文件include B文件,在B文件中可以调用A中的变量. A文件代码: <?php $aaa = '123'; include "B.php"; B文件代码: <