为什么我的函数没有返回数组?

Why isn't my function returning my array?

本文关键字:返回 数组 我的 函数 为什么      更新时间:2023-09-26
function getContent(type) {
  var content = [];
  $.get(`/${type}.json`, function(data) {
    $.each(data, function(index, hash) {
      content.push(hash);
    });
    // 1. content = [object, object, etc..]
  });
  // 2. content = []
  return content;
}

我需要帮助来理解这个。为什么content在第二条评论上是空的?从它的外观来看,该函数开始将哈希推入名为content的NEW变量,而不是引用我在开始时显式创建的内容。我该如何解决这个问题?为什么javascript的作用域如此混乱?

同样,为了解决这个问题,我使用了全局变量。为什么我的函数可以访问函数中的任何地方的全局变量content,但是在开始函数中调用content,它将无法访问某些地方

因为$.get是异步的。这个调用的本质是它进入事件循环,不修改当前的程序流。

你应该使用callback

function getContent(type, callback) {
  var content = [];
  $.get(`/${type}.json`, function(data) {
    $.each(data, function(index, hash) {
      content.push(hash);
    });
    callback( content );
 });
}
getContent("items", function( content ) {
   console.log(content);
});

为了给你一个更好的例子,你也可以使用你的流,但它应该是这样的:

function getContent(type, callback) {
  var content = [];
  $.get(`/${type}.json`, function(data) {
    $.each(data, function(index, hash) {
      content.push(hash);
    });
    callback();
  });
  return content;
}
var items = getContent("items", function() {
   console.log( items );
});