Javascript中的"for..in"产生"未定义"值

Fin*_*ire 1 javascript undefined for-in-loop

我正在研究Chrome的扩展程序,我只是想知道Javascript中"for..in"的用法.让我通过一个例子解释我发现的问题:

假设我有一个类型的volatile对象{prop1: "foo", prop2: "bar", ...}.我想用一些语法将这个对象保存在字符串中,例如"prop1=foo;prop2=bar;...".这是我使用的代码:

var fun = function(data) {
  var str = "";
  for (var i in data) {
    str += i + "=" + data[i] + ";";
  }
  return str;
};
log(fun({x:1, y:2}));
Run Code Online (Sandbox Code Playgroud)

fun将返回以下字符串:undefinedx=1;y=2;.

我真的不明白为什么它会遵循这种行为.我知道我可以使用JSON来"字符串化"这样的东西,但实际上我只是想了解它为什么会发生.

Joh*_*ica 5

这是你正在运行的确切代码吗?+之前的失踪data[i]让我相信它不是.它看起来很像str未初始化,如:

var fun = function(data) {
  var str;
  for (var i in data) {
    str += i + "=" + data[i] + ";";
  }
  return str;
}
Run Code Online (Sandbox Code Playgroud)

  • http://stackoverflow.com/questions/11108953/what-does-it-mean-if-console-log4-outputs-undefined-in-chrome-console < - 假设您正在使用Chrome,这就是问题所在(我认为它在Firefox和其他浏览器中是一样的) (2认同)