Javascript 属性的迭代进入无限循环

Javascript 属性的迭代进入无限循环,javascript,Javascript,我编写了一个脚本,使用object.keys()方法迭代对象的属性。但当我运行时,它进入无限循环 var employee = { "firstName" : "Krishna", "lastName" : "Majety", "age" : 29, "address" : { "city" : "Bangalore", "area" : "Marthalli" } } function printProperties(object, objectName

我编写了一个脚本,使用object.keys()方法迭代对象的属性。但当我运行时,它进入无限循环

var employee = {
  "firstName" : "Krishna",
  "lastName" : "Majety",
  "age" : 29,
  "address" : {
    "city" : "Bangalore",
    "area" : "Marthalli"
  }
}


function printProperties(object, objectName, tab){
  var props = Object.keys(object);

  for(i = 0; i < props.length; i++){
    property = props[i];

    if(object[property] instanceof Object){
      printProperties(object[property], objectName+"."+property, "  " + tab);
    }else{
       console.log(tab + objectName + "." + property + " => " + object[property]); 
    }
  }
}

printProperties(employee, "employee", "")
var员工={
“名字”:“克里希纳”,
“姓氏”:“Majety”,
“年龄”:29岁,
“地址”:{
“城市”:“班加罗尔”,
“区域”:“Marthalli”
}
}
函数printProperties(对象、对象名、选项卡){
var props=Object.keys(对象);
对于(i=0;i“+object[property]);
}
}
}
打印属性(雇员,“雇员”,“雇员”)

如果有人能解释这种行为的原因,那就太好了。

您的循环迭代器和属性变量是全局范围的,因此嵌套对象将重置它们。修复方法是使用
let
var
,或使用类似
forEach
的数组方法,并完全跳过迭代器

for (let i = 0; ...
  let property = props[i];

谢谢你的帮助……:)