解析数组时遇到困难

Difficulties parsing an array

本文关键字:遇到 数组      更新时间:2023-09-26

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);

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

for (var i = 0; ... )

这是因为当您赋值到变量而不使用 var 时,它被视为全局变量。这是特定于JavaScript的怪癖,但不是大多数其他语言。

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