Respostas:
Muito pouco por si só, de qualquer forma o DOM estará pronto para você operar (eu estava nervoso com isso até ler no Google ). Se você usar o truque do fim da página, seu código pode ser chamado um pouco antes, mas nada que importe. Mas, o mais importante, essa escolha está relacionada a onde você vincula seu JavaScript à página.
Se você incluir sua scripttag no heade depender ready, o navegador encontrará sua scripttag antes de exibir qualquer coisa para o usuário. No curso normal dos eventos, o navegador para de repente e faz o download do seu script, dispara o interpretador JavaScript e entrega o script para ele, em seguida, espera enquanto o interpretador processa o script (e então jQuery observa de várias maneiras para que o DOM esteja pronto). (Digo "no curso normal das coisas" porque alguns navegadores suportam os atributos asyncoudefer nas scripttags.)
Se você incluir sua scripttag no final do bodyelemento, o navegador não fará tudo isso até que sua página já esteja amplamente exibida para o usuário. Isso melhora o tempo de carregamento percebido para sua página.
Portanto, para obter o melhor tempo de carregamento percebido, coloque seu script na parte inferior da página. (Essa também é a orientação do pessoal do Yahoo .) E se você vai fazer isso, não há necessidade de usar ready, embora, é claro, você pudesse, se quisesse.
Porém, há um preço para isso: você precisa ter certeza de que as coisas que o usuário pode ver estão prontas para interagir. Ao mover o tempo de download para depois que a página for amplamente exibida, você aumenta a possibilidade de o usuário começar a interagir com a página antes que seu script seja carregado. Esse é um dos contra-argumentos para colocar a scripttag no final. Freqüentemente, não é um problema, mas você precisa olhar para sua página para ver se é e, em caso afirmativo, como deseja lidar com isso. (Você pode colocar um pequeno elemento embutido script no headque configura um manipulador de eventos em todo o documento para lidar com isso. Dessa forma, você obtém o tempo de carregamento aprimorado, mas se eles tentam fazer algo muito cedo, você pode dizer isso a eles ou, melhor, enfileirar o que eles queriam fazer e fazer quando seu script completo estiver pronto.)
Sua página carregará mais lentamente espalhando $(document).ready()scripts por todo o DOM (em vez de todos no final) porque requer que o jQuery seja carregado de forma síncrona primeiro.
$ = jQuery. Portanto, você não pode usar $em seus scripts sem primeiro carregar o jQuery. Essa abordagem força você a carregar o jQuery próximo ao início da página, o que interromperá o carregamento da página até que o jQuery seja totalmente baixado.
Você também não pode asynccarregar o jQuery porque, em muitos casos, seu $(document).ready()(s) script (s) tentarão executar antes que o jQuery seja totalmente carregado de forma assíncrona e causar um erro, porque, novamente, $ainda não foi definido.
Dito isso, existe uma maneira de enganar o sistema. Definindo essencialmente $igual a uma função que coloca $(document).ready()funções em uma fila / matriz. Em seguida, na parte inferior da página, carregue o jQuery, itere na fila e execute $(document).ready()um de cada vez. Isso permite que você adie o jQuery para o final da página, mas ainda use $acima dele no DOM. Eu pessoalmente não testei como isso funciona bem, mas a teoria é sólida. A ideia já existe há algum tempo, mas muito, muito raramente a vi implementada. Mas parece uma ótima ideia:
http://samsaffron.com/archive/2012/02/17/stop-paying-your-jquery-tax