word.includes(str) returns a boolean indicating whether or not str is included in word
 word.search(str) returns a number representing the position of the first str found in word, -1 if it does not exist.
At first, I wondered why JavaScript provides both, however it's possible to create only one method that works for both cases, returns position else returns undefined, but since both exist, so it should be for a reason, maybe String.includes is faster, or maybe, it's just to make things clearer.
It looks like String.includes should be faster as it only checks if str exists rather than trying to find its position, however, my simple thought: to check if str exists in word the algorithm should loop through the word characters anyway (if there is something I'm missing let me know) and once str is found, it can easily retrieve its position, so String.includes couldn't be faster.
I want to know the real difference between them and why both exist. thank you!
 
     
    