"对于“in”;在Javascript中;未定义的“;价值

"for..in" in Javascript yields "undefined" value

本文关键字:未定义 价值 Javascript quot 对于 in      更新时间:2023-09-26

我正在为Chrome开发一个扩展,我只是想知道"for.in"在Javascript中的用法。让我用一个例子来解释我发现的问题:

假设我有一个类型为{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}));

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

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

这正是您正在运行的代码吗?data[i]之前缺失的+让我相信它不是。它看起来很像str开始时未初始化,如:

var fun = function(data) {
  var str;
  for (var i in data) {
    str += i + "=" + data[i] + ";";
  }
  return str;
}