В данном случае отменяет действие браузера по умолчанию. По умолчанию, при нажатии кнопки submit браузер отправляет форму, return false отменяет это действие, из-за чего форма не отправляется и открытая страница остается прежней.
Если по простому, то да.
Естественно он подвиснет, ведь внешний цикл в таком случае выполняется 50000 раз, а внутренний аж (барабанная дробь)
Оба способа прекрасно работают и делают именно то, что вы и написали. Просто вы не успеваете увидеть всю работу кода, так как он слишком быстро меняет содержимое <p id="result"></p> Вы при каждом проходе цикла заменяете содержимое result на последующий элемент массива. В чем легко убедиться расставив брейкпоинты в инструментах и прогнав цикл по шагам. Если хотите что-бы в строку выводился каждый элемент массива, то сделайте так: result.innerHTML += arr[i]; или так: document.getElementById("result").innerHTML += arr[i];
Не понял вопроса про форму и просто <p> Способов вывода информации существует несколько, и все они правильные 🙂 Можно с помощью innerHTML просто писать текст и теги (и причем теги будут работать как будто они написаны в html), можно использовать textContent который выведет теги просто как текст, а можно создавать создавать элементы с помощью createElement, цеплять их к другим элементам и потом выводить на экран целыми блоками 🙂 Все зависит от ситуации.