Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

tanto faz? $function()...

Testei e funciona igual chamar as funções diretamente:

    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
    $("#botao-reiniciar").click(reiniciaJogo);

comparado ao function/ready:

$(function(){
    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
    $("#botao-reiniciar").click(reiniciaJogo);
});

Dei uma olhada no curso de Javascript e, pelo que percebi, não tem nenhuma função chamada diretamente. As funções naquele curso estão em algum listener e/ou estão sendo atribuídas a variáveis.

Tendo em vista que as tags SCRIPT que chamam os JS estão no fim do BODY e que toda a estrutura do HTML já foi carregada, existe algum risco das funções serem executadas antes do carregamento da página se não ficarem vinculadas ao function/ready?

Há algum outro motivo para não chamar as funções diretamente no corpo do Javascript?

Obrigado!

8 respostas

Oi Cristiano tudo bem?

Se você colocar o código no fim da página ele vai só ser executado depois de tudo acima ser carregado. Não tem problema.

Espero ter ajudado!!!

Obrigado André.

Sou da época que os javascripts eram declarados no início do html (geralmente com o código escrito direto na página html entre as tags <script>) e alguns acionamentos eram diretamente na tag <a> (<a href="javascript:funcao_js()" ...) e outros em propriedades onLoad, onClick, onMouseOver, etc.

Naquela época as funções do javascript eram declaradas na tag head se não estou enganado, junto com o CSS (sim, já existia CSS).

Pelo que vejo nesse tempo que fiquei afastado houve uma inversão e o javascript passou a ficar, necessariamente, ao final do body justamente para esperar o carregamento dos elementos da página.

O $(function(){}) seria uma alternativa a essa inversão da declaração do javascript? Ou seja, eu poderia passar a declarar o JS na tag head usando o $(function(){}) sem me preocupar?

Oi Cristiano tudo bem?

Eu também me senti assim quando comecei a desenvolver em Web. Aprendi Javascript na época do Orkut e agora mudou muito.

Com jquery para esperar a página carregar a função é

$(document).ready(function(){
//sua funcao
});

Do jeito que está fazendo é um atalho que funciona da mesma forma.

$(function(){ //sua funcao });

Outro jeito se gosta de deixar o script no head é chamar no html

<body onload="main()">

e colocar dentro do main() todas as funções que vai chamar. Espero que um dia essa moda pegue rsrsrs.

Oi André, obrigado pela resposta.

Bom saber que não sou o único velho aqui :)

O Douglas colocou na atividade 1 da aula 4 que:

" Como esta é uma função bastante utilizada do jQuery, ela também tem um atalho, que é a função chamada: $(function() { ... });. Quando passamos uma função dentro da função $() , estamos na verdade utilizando a função $(document).ready(). "

E depois ele fez a substituição:

$(function(){
    atualizaTamanhoFrase();
    inicializaContadores();
    inicializaCronometro();
    $("#botao-reiniciar").click(reiniciaJogo);
});

Eu entendi que assim também esperaria o carregamento da página.

Com relação ao onload, eu tinha pensado nisso também, mas fiquei na dúvida se essas propriedades ainda estavam em uso. Estou fazendo outro curso e tinha deixado para ver depois. Que bom que você fez esse comentário.

Não sei se é por ter conhecido o html daquela forma antiga, mas ver o javascript no fim do body dá uma sensação de que está fora de lugar.

Mas prefiro pensar que essa estranheza é porque em termos de organização de código faz mais sentido manter todo o conteúdo importado em um só lugar. Do jeito que está fica uma importação de conteúdo no head, com o CSS, e outra no body, com o JS. Sei lá...

Você tem razão Cristiano, corrigi a minha resposta.

Eu tentei olhar na documentação do consórcio W3 que dita as regras da Web e não dizem nada que o script tem que ir apenas no head.

Atualizando você também, o jQuery está saindo de moda também. O Javascript puro já faz tudo que ele faz.

Mas é bom aprender porque muitas páginas ainda usam jQuery.

Legal André, bom saber dessa situação do jQuery.

Eu estou começando a achar que não vale muito a pena investir em frameworks, bibliotecas, etc por conta. Melhor investir no html, css e javascript puros e ter uma noção apenas do restante.

Nos demais é melhor deixar para investir mais a fundo naquele que estiver em uso na empresa/projeto.

Obrigado pela ajuda!

solução!

Concordo com você. Javascript tem muito a aprender e sempre tem coisas novas saindo porque os navegadores não param de se atualizar. Depois de aprender bem é bom saber o básico de cada framework e quando sua empresa ou projeto começar a usar um ou outro dedicar bem em aprender.

Disponha e bons estudos!!!

Complementando sobre o que foi discutido anteriormente, estou fazendo o curso Performance Web, parte 2. Na aula 1, atividade 3 (vídeo), o Sérgio fala sobre o posicionamento do JavaScript ao final.

Para quem tiver interesse no assunto acho que vale a pena assistir.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software