【问题标题】:Error: Loop Variable Undefined错误:循环变量未定义
【发布时间】:2016-09-05 07:07:45
【问题描述】:

我正在尝试遍历一个数组,但它无法看到预期的输出。相反,当我尝试调试时,它说变量 r 未定义。这是用于for loop 的变量。

调试界面

上下文中的代码

function checkClassType(idOfEl,dropElem)
{
    var ElementType="";
    if (dropElem == "stream ui-draggable") {

        for(var r=0;r<100;r++)
        {
            if(createdImportStreamArray[r][0]==idOfEl)
            {
                ElementType="importStream";
                finalArray[idOfEl-1][2]= createdImportStreamArray[r][1]; //Selected Stream from Predefined Streams
                finalArray[idOfEl-1][3]= createdImportStreamArray[r][2]; //asName

            }
            else if(createdExportStreamArray[r][0]==idOfEl)
            {
                ElementType="exportStream";
                finalArray[idOfEl-1][2]= createdExportStreamArray[r][1]; //Selected Stream from Predefined Streams
                finalArray[idOfEl-1][3]= createdExportStreamArray[r][2]; //asName
            }
            else 
            {
                ElementType="definedStream";
                finalArray[idOfEl-1][2]= createdDefinedStreamArray[r][1]; //Stream Name
                finalArray[idOfEl-1][3]= createdExportStreamArray[r][4]; //Number of Attributes
                finalArray[idOfEl-1][4]=[];
                for(var f=0;f<createdExportStreamArray[r][4];f++)
                {
                    finalArray[idOfEl-1][4][f][0]=createdDefinedStreamArray[r][2][f][0]; //Attribute Name
                    finalArray[idOfEl-1][4][f][1]=createdDefinedStreamArray[r][2][f][1]; // Attribute Type
                }
            }
        }
    }

    else if (dropElem == "wstream ui-draggable") {
             //Continues...

但是,根据我的假设,r 将继续获得从 0 到 99 的值。那么它怎么可能是 undefined

【问题讨论】:

  • 请将您的代码复制并粘贴到问题中。它使您更容易创建问题和其他人阅读和修改以解决问题。
  • JavaScript 中的 varr 的变量声明提升到您正在查看的函数范围的最顶部(即 checkClassType 的开头)。因此,如果您在函数的另一个区域中未使用 r,或者尚未启动循环,则 r 将是 undefined
  • @grovesNL 但是,根据上述上下文,我是否偏离了您解释的概念?
  • @TaraWilfred:这只是解释为什么 r 在函数的最开始声明,因此将是 undefined 直到它碰到上面的循环或其他分配值的东西给它。
  • @grovesNL 我已经按照你提到的那样尝试过,我将var r=0 放在循环语句之外,并且循环仅检查对循环体语句执行 r=0 并且不会通过递增进行迭代。您能否发布一个答案,显示我需要更改上述内容的方式。提前致谢

标签: javascript jquery for-loop undefined jsplumb


【解决方案1】:

尝试在方法的最开始声明 r 变量

function checkClassType(idOfEl,dropElem)
{
var r=0
var ElementType="";
if (dropElem == "stream ui-draggable") {

    for(;r<100;r++)
    {
        if(createdImportStreamArray[r][0]==idOfEl)
        {
            ElementType="importStream";
            finalArray[idOfEl-1][2]= createdImportStreamArray[r][1]; //Selected Stream from Predefined Streams
            finalArray[idOfEl-1][3]= createdImportStreamArray[r][2]; //asName

        }
        else if(createdExportStreamArray[r][0]==idOfEl)
        {
            ElementType="exportStream";
            finalArray[idOfEl-1][2]= createdExportStreamArray[r][1]; //Selected Stream from Predefined Streams
            finalArray[idOfEl-1][3]= createdExportStreamArray[r][2]; //asName
        }
        else 
        {
            ElementType="definedStream";
            finalArray[idOfEl-1][2]= createdDefinedStreamArray[r][1]; //Stream Name
            finalArray[idOfEl-1][3]= createdExportStreamArray[r][4]; //Number of Attributes
            finalArray[idOfEl-1][4]=[];
            for(var f=0;f<createdExportStreamArray[r][4];f++)
            {
                finalArray[idOfEl-1][4][f][0]=createdDefinedStreamArray[r][2][f][0]; //Attribute Name
                finalArray[idOfEl-1][4][f][1]=createdDefinedStreamArray[r][2][f][1]; // Attribute Type
            }
        }
    }
}

else if (dropElem == "wstream ui-draggable") {
         //Continues...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2012-04-30
    • 2018-05-17
    相关资源
    最近更新 更多