Да, требуется для написания чистого кода, но есть ярлык:
$(function() { .... });
// is the same as
$(document).ready(function() { .... });
Поведение объектов DOM, прикрепление событий и т. Д. До полной загрузки объектов DOM будет непредсказуемым и часто вообще не будет работать.
Это может работать, если элементы объявлены до загрузки частей скрипта.