indexOf!= -1会返回一个布尔值吗?

Ron*_*lom 1 javascript

我刚刚开始学习Javascript,我对下面的特定代码有一个特定的问题.它是Eloquent Javascript第4章中lycanthrope登录的一部分.由于我的问题的特殊性,我没有包括与此问题相关的所有其他代码,因为我认为没有必要回答我的问题.

如果这被认为是"不良做法",请告诉我,我将确保修改此和/或未来的帖子以显示更多背景信息.

在下面的代码中,第二行显示返回.到目前为止,我已经了解到indexOf返回一个正数或零,当且仅当它发现其中传递的任何内容时才会发生.如果没有发现,则返回-1.

在这种情况下,它后跟!= -1,我理解为"不等于-1".这对我来说很清楚.

我不完全理解的是第2行的实际回报最终是什么.它返回true或false的布尔值吗?或者它是否返回了找到"事件"的实际索引?

接下来,在第一个if语句中,我们再次看到hasEvent变量.我将此语句读作"如果hasEvent(event,entry)为true,则将1添加到索引中.

我是否正在阅读'这是正确的,第二行的回报确实是一个布尔值?

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;
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,请告诉我是否应该以不同的方式陈述此问题!我想在继续之前确保我理解事情!

Poi*_*nty 6

!=运营商一直有一个布尔结果.

return后跟表达式语句返回表达式的值,所以该函数的返回值将是任一truefalse.


Dan*_*ite 5

是的。使用===, ==, !, !==, !=, >, >=,<<=产生一个布尔表达式,它会从 返回一个布尔值hasEvent