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

时间:2011-04-29 07:34:56

标签: javascript

var rowData = [];

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

    return rowData;
}

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

伙计们在发布

时,这是一个错误的错误

4 个答案:

答案 0 :(得分:3)

永远不会调用函数someName(例如someName();)。由于永远不会调用它,因此永远不会执行push语句。

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

答案 1 :(得分:1)

你有一个函数声明一个匿名函数,直到你的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

答案 2 :(得分:0)

你忘了关闭你想要推送的每个字符串的引号..一旦你这样做,它将返回一个字符串数组。

答案 3 :(得分:0)

你没有关闭字符串...这应该有效  var rowData = [];

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

return rowData;

}