#javascript
#javascript
Вопрос:
var rowData = [];
function someName() {
JsonClient.onload = function () {
rowData.push("sasas");
rowData.push("sasas1");
rowData.push("sasas2");
rowData.push("sasas3");
};
return rowData;
}
Это возвращает мне пустые rowData. Почему?
Ребята, я допустил опечатку при публикации
Комментарии:
1. У вас есть синтаксические ошибки в каждой строке «push»
2. Ну, я думаю, rowData не входит в область действия вашей функции someName(), потому что она объявлена внутри другой функции …..?
3. Почему бы вам просто не протестировать это самостоятельно: D
4. проверьте свой код, у вас ошибки в строках, вы забыли закрыть »
5. Убедитесь, что ваш код допустим, проверьте консоль ошибок, также убедитесь, что функции вызваны.
Ответ №1:
Функция someName
никогда не вызывается (например someName();
). Поскольку она никогда не вызывается, push
инструкции никогда не выполняются.
Даже если бы она была вызвана, someName
функция просто присваивает функции анонимного обратного вызова JsonClient.onload
. Ваш код не показывает нам, что JsonClient
такое, но, похоже, можно с уверенностью предположить, что это обработчик события для HTTP-ответа. Эта функция не будет вызвана до тех пор, пока браузер не получит HTTP-ответ, к этому времени return
инструкция уже была бы выполнена. Вы не можете выполнить возврат из Ajax-запроса, вам приходится иметь дело с данными в самом обратном вызове.
Ответ №2:
У вас есть функция, которая объявляет анонимную функцию, которая не будет выполняться до тех пор, пока ваш 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
Ответ №3:
Вы забыли заключить в кавычки каждую строку, которую пытаетесь вставить.. Как только вы это сделаете, она вернет массив строк.
Комментарии:
1. Нет … проблема была не в этом… почему мои rowData пусты
Ответ №4:
Вы не закрыли строки… это должно сработать var rowData = [];
function someName(){
JsonClient.onload = function(){
rowData.push("sasas");
rowData.push("sasas1");
rowData.push("sasas2");
rowData.push("sasas3");
};
return rowData;
}