Во-первых, я новичок в javascript, и это мой первый «проект» на этом языке, поэтому я заранее извиняюсь за свое нежелание.Функция Javascript возвращает undefined
Я использую листовки и D3 в этом проекте, и я не могу заставить эту функцию возвращать что-либо, кроме «Undefined». Сначала я, хотя я не возвращался из функции должным образом, поэтому я попытался воспроизвести ошибку в меньшем масштабе здесь:
Однако, что работал для меня, так что теперь я немного потерял на что делать.
Вот простой вариант моего кода, я попытался удалить все, что не кажется уместным и изменил имена, чтобы сделать его легче понять:
$(function() {
...
function getThings(code) {
d3.csv("data.csv", function(data){
for (var i = 0, len = data.length; i < len; i++){
if (data[i].code == code){
alert("return 5!")
return 5;
}
else{
return 0;
}
}
})
}
L.geoJson(features, {
style: function (feature) {
return { opacity: 0, fillOpacity: 0.5, fillColor: "#0f0" };
},
onEachFeature: function(feature, layer){
var test = getThings(5);
alert(test);
...
Я последовательно добраться до «возвращения 5 !» а затем в сообщении alert (test) я просто получаю «Undefined».
Кто-нибудь знает, где я ошибся? Спасибо заранее!
Хотя true, если OP использовал функцию 'return' в функции getThings,' test' было бы присвоено не неопределенное значение (но не данные). – user2864740
Справа. Если бы он выполнял 'return d3.csv()', мы бы вернули, скорее всего, обещание. – xbonez