There are two events related to web page initialization of browser.
- DOMContentReady(document object) : HTML document was parsed and DOM tree was constructed
- load(window object) : All element of HTML document were rendered(displayed)
In my understanding, browser can't start rendering page before DOM is ready(DOMContentReady is fired) and by default script tag blocks any other browser process until script file is downloaded and executed.
Then why is it good to put script tag in the end of body tag? In my opinion, browser will be blocked when it meets script tag in any position of the page, so DOMContentReady will not be fired until script tag is downloaded and executed. As a result, user can't see anything except white blank page until script is fully processed regardless of position of script tag.