You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript中for循环的迭代变量i值为何会被意外修改?

问题原因

VBScript 默认所有未显式声明作用域的变量都是脚本级全局变量,全脚本所有位置的读写操作都会修改同一个变量值:

  • 你没有用 Dim 声明过变量i,外层输入数组的for循环用的是全局i
  • 你定义的prime函数内部直接对i赋值、自增,修改的也是同一个全局i,所以每次调用prime函数后,全局的i值都会被覆盖,你在第二个for循环里打印的i自然每次都会变动。

修复方案

  • 方案1:给prime函数内部的循环变量添加局部声明,避免修改全局变量,修改后的prime函数如下:
Function prime(n)
    Dim flag, i ' 声明函数内部的局部变量
    flag = 1 
    i = 2
    do while i <  n  
        if n mod i = 0 Then
            flag = 0
            exit do
        end if
        i = i + 1
    loop
    prime = CBool(flag)
end Function
  • 方案2:在脚本最开头添加 Option Explicit 语句,强制要求所有变量必须先声明才能使用,运行时如果出现未声明的变量会直接抛出错误,从根源上避免这类变量作用域混淆问题。
  • 方案3:不同层级的循环尽量使用不同的变量名,降低重名冲突的概率。

内容的提问来源于stack exchange,提问作者thangvc91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:39:04