VBScript中变量作用域_ASP基础

下午在写程序的时候,碰到个变量重定义的问题,具体是在一个函数中的两个地方定义了相同的变量,两个变量分别放在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:28

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

VBScript中变量作用域

下午在写程序的时候,碰到个变量重定义的问题,具体是在一个函数中的两个地方定义了相同的变量,两个变量分别放在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定义的变量,这里要注意一点,只要是在函数里定义的变量,就算是在最       后一句定义,该变量也拥有整个函数的作用域.但是它的赋值是等到运行到那一句代码以         后才赋值的!!!   特别应该说明的一点是,作用域是层

在VBScript中使用类_ASP CLASS类

首先,在我进入实质性主题并解释如何建立类之前,我希望保证你知道"对象".虽然你可以在程序中使用对象而不用知道其正确的规则,但我并不建议如此!对于对象的初学者,接下来的部分将让你了解其概念及内容.已经了解面向对象编程(OOP)的读者可以跳过这章节. 导论 l "对象是什么?"--对象通常代表某种实体,主要是一个变量和函数的集合. l "实体是什么?"--字面上说,实体是一个"事物",我的意思是一个概念或者任何一个物体.例如,一辆

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

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

一个ASP中的数组_ASP基础

当数据库中读取很多的数据. 将他连成了字符串,格式如下:str=1###0###1***2###1###1_1***3###1###1_2***4###2###1_1_1***5###2###1_1_2***6###4###1_1_1_1***7###6###1_1_1_1_1 然后用先用arrResult=split(str,"***")将str分到数组中,接着再对arrResult数组的每条数据用arrTmp=split(arrResult(i),"###")来

如何回到先前的页面的方法多中语言[原创]_ASP基础

asp: 复制代码 代码如下: <a href="<%=request.serverVariables("Http_REFERER")%>">preivous page</a>或用图片如:<img src=http://www.host01.com/Get/asp/00010006/"arrowback.gif" alt="<%=request.serverVariables("

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

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