我目前正在阅读Eloquent Javascript,并且发现了那只松鼠的例子。当Jacques(问题的主题)变成松鼠时,我们正在使用一段代码来创建表格/矩阵。它引用了我们之前制作的期刊。
这是代码。
function hasEvent(event, entry) {
return entry.events.indexOf(event) != -1;
}
function tableFor(event, journal) {
var table = [0, 0, 0, 0];
for (var i = 0; i < journal.length; i++) {
var entry = journal[i], index = 0;
if (hasEvent(event, entry)) index += 1;
if (entry.squirrel) index += 2;
table[index] += 1;
}
return table;
}
console.log(tableFor("pizza", JOURNAL));
// → [76, 9, 4, 1]
现在我理解函数tableFor的作用以及它如何从变量日志引用事件(我们将日志作为单独的文件和引用)但我不理解!= 1并返回函数tableFor 。我假设我们想要确定我们要查找的这个事件是否返回true如果是这样的话我们为什么不做&#34; if&#34;条目?或者== 0,或== 1?我错过了什么吗?
如果有人可以解释有关
的所有信息return entry.events.indexOf(event) != -1;
非常感谢。
答案 0 :(得分:2)
当且仅当传入任何内容时,indexOf函数返回正数(或零)。如果没有出现,indexOf返回-1。如果事件发生,hasEvent函数将返回true,否则返回false。
答案 1 :(得分:0)
OP要求有两个方面:
indexOf
功能如何运作if
语句接受的答案回答了第一个问题。然而,第二个不是。
OP似乎理解它,因为他接受了答案,但对于这个问题的其他观众,它可能仍然不清楚。
function hasEvent(event, entry) {
return entry.events.indexOf(event) != -1;
}
等同于以下内容:
function hasEvent(event, entry) {
if (entry.events.indexOf(event) != -1)
return true;
else
return false;
}