В чем ошибка в цикле

Поиск подстроки в строке, если вместо return ставлю console.log просто выводится результат поиска при return происходит ошибка

var longString = “very long string what inclide some repeats”;
var pos = 0;
var needle = “ng”;
while( true ) {
var pos = longString.indexOf(needle, pos);
if (pos == -1) { break }
pos ++;
return pos;
}

Ошибки нет. Наверное дело в том, что ты пробуешь запустить код в консоли, а return можно выполнять только из функции. Сообщение об ошибке “SyntaxError: Illegal return statement” подсказывает.

Можно весь код обернуть в функцию, можно убрать return, чтобы в тогде все заработало как ожидается.

function searchAct() {
	var longString = "very long string what inclide some repeats";
	var pos = 0;
	var needle = "ng";
	while (true) {
		pos = longString.indexOf(needle, pos);
		if (pos == -1) {
			break;
		}
		pos++;
		return pos;
	}
}

searchAct(); // 8
1 Симпатия