我正在閱讀Addy Osmani的Cranium.js(https://gist.github.com/addyosmani/3769967)代碼,我無法理解JavaScript的兩行代碼。整個代碼如下:瞭解Cranium.js代碼
// Mix in to any object in order to provide it with custom events.
var Events = Cranium.Events = {
channels: {},
eventNumber: 0,
trigger: function (events, data) {
for (var topic in Cranium.Events.channels){
if (Cranium.Events.channels.hasOwnProperty(topic)) {
if (topic.split("-")[0] == events){
Cranium.Events.channels[topic](data) !== false || delete Cranium.Events.channels[topic];
}
}
}
},
on: function (events, callback) {
Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
},
off: function(topic) {
delete Cranium.Events.channels[topic];
}
};
我不明白,第一行是:
if (topic.split("-")[0] == events){
Cranium.Events.channels[topic](data) !== false || delete Cranium.Events.channels[topic];
}
那就是:我明白了,如果有什麼我不明白是什麼是內部發生大括號。在我看來(但我可能是錯的),如果左邊的表達是真的,什麼也不會發生,如果不是,他會刪除Cranium.Events.channels[topic]
。
第二行,我不明白的是:
Cranium.Events.channels[events + --Cranium.Events.eventNumber] = callback;
我不明白的雙減號。
任何意見表示讚賞。
所以你的問題是更通用的「** **和** - **是什麼意思?」 - 首先是正常的'OR' taht在這種情況下轉換爲正常的'if'子句,因爲左邊的操作是布爾型的,第二個與'Cranium.Events.eventNumber = Cranium.Events.eventNumber - 1'相同。 ,但是因爲它在後面,'--Cranium.Events.eventNumber'而不是'Cranium.Events.eventNumber - '它將首先計數並在操作後給你數字。 – balexandre
也許,我不明白的是大局:也就是說,我不明白他爲什麼要進行這種減法。謝謝:-) – ContentiousMaximus