1

自从我使用经典的 asp 以来已经有一段时间了,我对可变范围有完全的大脑衰退。

我在这里做错了什么?

<SCRIPT LANGUAGE=vbscript RUNAT=Server>
dim test
test = "Test it"

function testAsp()
   testasp = "Should be a result here " & test
end function
</SCRIPT>

<html>
<body>
<%
   response.write(testAsp())
%>
</body>
</html> 

如果我将声明移到块内,一切都很好。运行服务器 2008 R2,IIS 7.5。有什么改变吗?还是我?

4

1 回答 1

5

将您的更改<SCRIPT LANGUAGE=vbscript RUNAT=Server>为 a<%并将您的更改为</SCRIPT>a %>,您应该会很好。

您会被经典 ASP 生命周期中脚本引擎的执行顺序所吸引。这很令人困惑,但是该<SCRIPT />块将在该<% %>块之后执行,即使它按源的顺序排在第一位。我无法轻易解释为什么在<% %>块中定义函数,但我希望它与函数提升有关。

为了进一步澄清,这是您开箱即用的顺序(假设 VBScript 被配置为您的默认语言):

  1. JScript 包含在<script runat="server" language="jscript" />
  2. 内联 VBscript,包含在<% %>块中
  3. VBScript 包含在<script runat="server" language="vbscript" />
于 2012-05-12T16:55:50.827 回答