Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does indexOf != -1 return a Boolean?

Tags:

javascript

I have just started learning Javascript and I have a specific question about a specific piece of code below. It is part of the lycanthrope's log in chapter 4 of Eloquent Javascript. Because of the specificity of my question I haven't included all the other code associated with this problem for I believe it isn't necessary to answer my question.

Please do let me know if this is considered 'bad practice' and I will make sure to ammend this and/or future posts to show more background.

In the code below the second line shows a return. So far I have learned that indexOf returns a positive number or zero if and only if it finds an occurence of whatever is passed in it. If no occurence is found it returns -1.

In this case it is followed by != -1, which I understand to mean "not equal to minus 1". That is clear to me.

What I do not completely understand is what the actual return in line 2 ends up being. Does it return a Boolean value of either true or false? Or does it return he actual index where the 'event' is found?

Further on, in the first if-statement, we see the hasEvent variable again. I read this statement as "If hasEvent(event, entry) is true then add 1 to the index.

Am I 'reading' this right and is the return in the second line indeed a Boolean?

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;
}

Thank you for your help and please tell me if I should have stated this question differently! I am trying to make sure I understand things before I move on!

like image 679
Ronny Blom Avatar asked Jun 08 '26 16:06

Ronny Blom


1 Answers

The != operator always has a boolean result.

A return statement followed by an expression returns the value of the expression, so the returned value of that function will be either true or false.

like image 189
Pointy Avatar answered Jun 11 '26 07:06

Pointy