这个函数会返回什么?空数组或对象数组

What will this function return? An empty Array or Array of Objects

本文关键字:数组 对象 什么 函数 返回      更新时间:2023-09-26
var rowData = [];
function someName() {
    JsonClient.onload = function () {
        rowData.push("sasas");
        rowData.push("sasas1");
        rowData.push("sasas2");
        rowData.push("sasas3");
    };
    return rowData;
}

返回一个空的rowData。为什么?

伙计们,这是我在发布

时的一个打字错误

函数someName从未被调用(例如someName();)。因为它永远不会被调用,所以push语句永远不会被执行。

即使被调用,someName函数也只是给JsonClient.onload分配一个匿名回调函数。你的代码没有告诉我们JsonClient是什么,但它似乎是一个安全的假设,它是一个HTTP响应的事件处理程序。在浏览器接收到HTTP Response之前,不会调用该函数,此时return语句已经执行完毕。您不能从Ajax请求返回,您必须处理回调本身的数据

你有一个函数声明了一个匿名函数,该函数在JsonClient加载完成之前不会执行。

你需要这样做:

var rowData = [];
function someName(){
   JsonClient.onload = function(){
     rowData.push("sasas");
     rowData.push("sasas1");
     rowData.push("sasas2");
     rowData.push("sasas3");
     useRowData(rowData);
   };
   // here I would expect a call like JsonClient.send();
}
function useRowData(rowData) {
  alert(rowData);
}
someName(); // execute the actual function

你忘记在你想推的每个字符串上加双引号了。一旦你这样做,它将返回一个字符串数组。

你没有关闭字符串…这应该可以工作var rowData = [];

function someName(){
   JsonClient.onload = function(){
   rowData.push("sasas");
   rowData.push("sasas1");
   rowData.push("sasas2");
   rowData.push("sasas3");
};
return rowData;

}