Как понять этот код JavaScript начинающему кодеру?
Тут прикол в том, что ищется первая буква имени, когда эта буква находится, получаем длину имени и прибавляем к нему 1 (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда и это прибавление). Вот с комментариями // Строка, где будем искать имя 
var text = "Hey,my is Bobby!";
// Само имя 
var myName = "Bobby";
// Сюда будет пихать буквы имени, которые извлечем из строки 
var hits = [];

// Начинаем цикл, который будет перебирать каждый символ, потому что length возвращает
// количество символов в строке 
for ( var i=0; i<text.length; i++ ) {
    // Такк как мы перебираем не буквы, а числа, поэтому мы получаем символ из строки text
    // передачей позиции символа. Если буква найдена, то продолжаем. 
    if(text[i]==='B'){
        // Вы не поняли, зачем и почему тут j=i, да потому что мы все еще продолжаем искать 
        // символы в той же самой строке, а так как мы этот символ уже нашли, то нету смысла
        // начинать все с самого начала, потому что это неправильно, так как если предположить, что
        //  у нас до этого был перебор посимвольно строки весом скажем, 100Гб, то вы сами можете
        //  понять, что нам незачем еще раз делать то, что мы уже сделали, поэтому мы просто 
        // присваиваем переменной j текущее значение и позицию i и создаем цикл который позволит
        // нам полностью "забрать" слово. Как? Опять же берем длину строки с именем и прибавляем
        // единицу (почему 1? вспомните про то, что все массивы начинаются не с 1, а с 0, отсюда 
        // и это прибавление). 
        for(var j = i; j < (myName.length + i); j++) {
                        // Отправляем букву в массив
			hits.push(text[j]);
        }
    }
}

if (hits.length === 0) {
	console.log("Your name wasn't found!");
} else {
	console.log(hits);
}
Проще просто нельзя :)
Ищет подстроку 'Bobby' в строке 'Hey,my is Bobby!', только коряво как то. Зачем два цикла еще и в массив записывать, indexOf  есть же для этого