По какой-то причине я не могу получить длину массива (он неопределен, если он незаселен, не так ли?).Является ли .length подходящим вызовом массива JavaScript?
define(function() {
'use strict';
var self = {},
events = {};
self.publish = function publish(eventName, data) {
var subscribers, x, length;
if (events[eventName]) {
return false;
}
subscribers = events[eventName];
for (x = 0, length = subscribers.length || 0; x < length; x += 1) {
subscribers[x](data);
}
return true;
};
self.subscribe = function subscribe(eventName, func) {
if (!events[eventName]) {
events[eventName] = [];
}
events[eventName].push(func);
};
return self;
});
JSLint говорит: «Ожидаемый»; и вместо этого увидел «,». Жасмин говорит: «ТипError: Невозможно прочитать свойство« длина »неопределенного»
Почему длина не установлена на 0? Я неправильно понял синтаксис здесь?
Не следует изменять '' 'for (x = 0, subscription.length || 0; x
Почему вы считаете, что' подписчики 'являются массивом? Кажется, он «неопределен». – user2357112
'undefined, если он незаселен, правый' нет, он равен нулю. Имеет смысл - в массиве есть нулевые объекты, поэтому длина равна нулю. – vlaz