1

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

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

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

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

4

1 回答 1

5

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

var fun = function(data) {
  var str;
  for (var i in data) {
    str += i + "=" + data[i] + ";";
  }
  return str;
}
于 2013-07-23T20:52:30.107 回答