The idea behind the inline script is that it runs immediately, before any of the external scripts are loaded. This should only be used in rare cases where the script should run before the page is displayed in the browser, such as sizing something to the window or autofuocusing an element in browsers that don't support the "autofocus" attribute.
Is there a reason why you would want to include this in the inline script instead of in the app's script file? If you are waiting for the external file to load anyway, then isn't this the same as including the functions in the app's script?
In browsers that support async, the defer won't change anything. However, there are a number of old browsers (most IE versions and some versions of Firefox) that support defer and not async. Adding defer can help those browsers to render a little faster.
- Nate