なんらかの理由で、配列の長さを取得できません(配列が不完全な場合は未定義です)。.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は、「期待している」、代わりに鋸 '、'。 Jasmineは "TypeError:プロパティ '長さ'が未定義です。 '
なぜ長さは0に設定されていませんか?私はここでの操作の構文を誤解していますか?
(x = 0、subscribers.length || 0; x
なぜあなたは' subscribers'が配列であると思いますか?それは '未定義 'と思われます。 – user2357112
'未使用の場合は未定義です。いいえ、ゼロです。意味があります - 配列内にオブジェクトがないため、長さはゼロです。 – vlaz