@zzmaster

Javascript — length массива не может быть использована. WTF?

Столкнулся с совершенно бредовой ситуацией в джаваскрипте. Вычисляю количество недоставленных заказов в массиве курьеров (метод глобального объекта):
var CourierRouter = {
...
	num_pending_orders: function() {
		var num = 0;
		console.log(CourierRouter.couriers_done.length===2, CourierRouter.couriers_done);
		for(var i=0; i<CourierRouter.couriers_done.lenth; i++)
		{
			console.log("i'm inside");
			num += CourierRouter.couriers_done[i].pending_orders.length;
		}
		console.log('after');
		return num;
	}
}

использовать в теле функции this нет возможности, потому что она вызывается из success колбэка $.ajax и хотя, последний вызывается из метода объекта, в колбэке this совсем другой.
в консоли имею:

true, Array [Object , Object ]
after

то есть проперть length является числом 2 и в массиве действительно 2 элемента, но в цикл не заходит!
а если явно указать двойку:
num_pending_orders: function() {
		var num = 0;
		console.log(CourierRouter.couriers_done.length===2, CourierRouter.couriers_done);
		for(var i=0; i<2 /*CourierRouter.couriers_done.lenth */; i++)
		{
			console.log("i'm inside");
			num += CourierRouter.couriers_done[i].pending_orders.length;
		}
		console.log('after');
		return num;
	}

то все в порядке:

true, Array [Object , Object ]
i'm inside
i'm inside
after


в коде есть асинхронные вызовы - запросы к Яндекс картам, к своему скрипту, и я подозреваю, что это они аукнулись, но как?? и что делать??
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Опечатка
lenth !== length
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы