javascript,这个函数怎么可能返回空数组?

javascript,这个函数怎么可能返回空数组?,javascript,arrays,function,loops,concat,Javascript,Arrays,Function,Loops,Concat,concat函数完全无法执行任何操作。但是,如果我在Firebug中的那一行上设置一个断点,并将这一行作为手表运行,它就可以正常工作。for循环迭代两次,但最后arr仍然等于[]。数组。concat创建一个新数组-它不会修改原始数组,因此当前代码实际上什么也不做。它不修改arr 因此,您需要将函数更改为此,以查看其实际工作情况: function whatTheHeck(obj){ var arr = [] for(o in obj){ arr.concat(["what"])

concat函数完全无法执行任何操作。但是,如果我在Firebug中的那一行上设置一个断点,并将这一行作为手表运行,它就可以正常工作。for循环迭代两次,但最后arr仍然等于[]。

数组。concat
创建一个新数组-它不会修改原始数组,因此当前代码实际上什么也不做。它不修改
arr

因此,您需要将函数更改为此,以查看其实际工作情况:

function whatTheHeck(obj){
  var arr = []

  for(o in obj){
    arr.concat(["what"])
  }

  return arr
}

whatTheHeck({"one":1, "two": 2})
如果您只想在数组的末尾添加一个项目,
.push()
是一种更好的方法:

function whatTheHeck(obj){
  var arr = [];

  for(o in obj){
    arr = arr.concat(["what"]);
  }

  return arr;
}

whatTheHeck({"one":1, "two": 2});

这是我发现Javascript数组方法有点混乱的地方之一。有些修改原始数组,有些不修改,并且没有命名约定来知道哪些做,哪些不做。您只需阅读并了解哪种方式工作。

实际上,即使没有循环,它也会失败。唯一有效的方法是直接说
return[].concat([“what”])
。这个世界有点不对劲。哇,我真是太蠢了。在什么地方解释的时候我在哪里?有些东西会修改你的对象,有些会生成新的对象,我只是假设。。。
function whatTheHeck(obj){
  var arr = [];

  for(o in obj){
    arr.push("what");
  }

  return arr;
}

whatTheHeck({"one":1, "two": 2});