解析数组的困难

时间:2015-01-31 05:00:59

标签: javascript arrays for-loop

parsePre的这个函数调用在数组[1," PHYS112"," PHYS122" ]。它没有继续进入数组中的下一个元素。我想知道是否有什么东西阻止for循环继续第一次呼叫?

   var stuff = {
              "subject":"PHYS",
              "catalog_number":"375",
              "title":"Stars",
              "prerequisites":"Prereq: PHYS 112 or 122 and two of PHYS 234, 241, 242, 256, 258\/358, 263, 275",
              "prerequisites_parsed":[
                [ 1, "PHYS112", "PHYS122" ],[ 2,"PHYS234","PHYS241","PHYS242","PHYS256",
                                              [ 1, "PHYS258", "PHYS358"],
                                              "PHYS263", "PHYS275"]]
            };
var pr = stuff.prerequisites_parsed;


var parsePre = function (pre){
  console.log(pre);
  console.log(pre.length);
  for(i = 0; i < pre.length; i++){
    console.log(i);
    if(typeof pre[i] === 'number'){
      console.log(pre[i] + " of: ");
    }
    else if(typeof pre[i] === 'string'){
      console.log(pre[i] + ", ");
    }
    else {
      console.log("WE SHOULD RECURSE");
      parsePre(pre[i]);
    }
  }
}

parsePre(pr);

1 个答案:

答案 0 :(得分:1)

递归被破坏,因为每次调用都在i - 循环中重用相同的for变量。要解决此问题,请将您的行替换为:

for (var i = 0; ... )

这是因为当您在不使用var的情况下分配给变量时,它将被视为全局变量。这是一个特定于JavaScript的怪癖,但不是大多数其他语言。

将来,您可以将此行放在JavaScript代码的顶部来解决这些问题:"use strict";