Function 调用sub()以获取ASP/VBscript中的变量值

Function 调用sub()以获取ASP/VBscript中的变量值,function,vbscript,asp-classic,Function,Vbscript,Asp Classic,这可能是一个基本问题。。。但这让我很困惑 在ASP/VBscript页面的开头,我调用了sub(),以获取应用程序的一些配置值。我使用的是sub,因此不需要在应用程序的每个页面上编写相同的查询来获取这些值。此子项包含在每页顶部的文件中 我已经测试并确认在sub()中,配置变量具有正确有效的值。 但当我稍后在页面中尝试调用这些变量值时,它们是空的 sub上是否有某种权限设置,以使值在整个调用页面中都可访问?这里的问题是变量的范围 举个例子,我们有一个名为testvar的变量,但它定义在两个不同的范

这可能是一个基本问题。。。但这让我很困惑

在ASP/VBscript页面的开头,我调用了
sub()
,以获取应用程序的一些配置值。我使用的是
sub
,因此不需要在应用程序的每个页面上编写相同的查询来获取这些值。此
子项
包含在每页顶部的文件中

我已经测试并确认在
sub()
中,配置变量具有正确有效的值。 但当我稍后在页面中尝试调用这些变量值时,它们是空的


sub
上是否有某种权限设置,以使值在整个调用页面中都可访问?

这里的问题是变量的范围

举个例子,我们有一个名为
testvar
的变量,但它定义在两个不同的范围内,第一个在全局范围内,第二个在子过程的局部范围内

选项显式
'在全局范围中声明的变量将可用于任何过程
“希望使用它。
Dim testvar:testvar=“全局”
调用测试()
调用Test2()
Call Response.Write(testvar&“
”)将等于“global changed” 子测试() Call Response.Write(testvar&“
”)将等于“global” '正在更新全局变量。 testvar=“全局已更改” 端接头 子测试2() '变量在本地作用域中声明,并且仅可用 '中声明的程序。 Dim testvar:testvar=“本地” 调用响应。Write(testvar&“
”)将等于“local” 端接头
输出:

global
local
global changed
testvar
声明未正确定义时,这可能会引起混淆,从而导致歧义

请记住,在子函数中声明的变量仅对该子函数可用,不能在该子函数范围之外使用

在子/函数(也称为全局范围)之外声明的变量(如果我们开始讨论类,情况并不总是如此,但现在让我们保持简单)可用于任何子/函数,并且可以在页面中的任何位置调用(包括从
#include
,因为这只是现有页面代码的扩展)


有用的链接

这将是变量范围,请使用
Option Explicit
Dim
确保所有变量的声明和范围正确。我所说的作用域是指,例如,如果在
Sub
过程中有使用
Dim
声明的变量,则它们仅在该过程中可用。要使它们在过程之外可用,请使用
Dim
在过程之外声明它们。这也是未知的全局定义变量。请查看我关于变量声明和范围的信息。感谢您耐心的回答@Lankymart-如果您愿意,请输入您的响应作为答案,我将对其进行检查。这些值通常存储为应用程序变量,根据其定义获得全局范围。