Javascript 错误:循环变量未定义

Javascript 错误:循环变量未定义,javascript,jquery,for-loop,undefined,jsplumb,Javascript,Jquery,For Loop,Undefined,Jsplumb,我试图在数组中循环,但它无法看到预期的输出。相反,当我尝试调试时,它说变量r未定义。这是我用于for循环的变量 调试界面 上下文中的代码 function checkClassType(idOfEl,dropElem) { var ElementType=""; if (dropElem == "stream ui-draggable") { for(var r=0;r<100;r++) { if(createdI

我试图在数组中循环,但它无法看到预期的输出。相反,当我尝试调试时,它说变量
r
未定义。这是我用于
for循环的变量

调试界面

上下文中的代码

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...
函数检查类类型(idOfEl、dropElem)
{
var ElementType=“”;
如果(dropElem==“流ui可拖动”){

对于(var r=0;r尝试在方法的最开始声明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...
函数检查类类型(idOfEl、dropElem)
{
var r=0
var ElementType=“”;
如果(dropElem==“流ui可拖动”){

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