Olá, a ordem dos scripts importa. Mas vai depender do seu código. Se importei primeiro o scriptA.js
e em seguida scriptB.js
, caso meu scriptA.js
dependa de uma função que foi definida no scriptB.js
, na execução do código haverá um erro onde a função que você tentou executar não está definida.
Em relação à primeira dúvida, JavaScript é uma linguagem que também traz o paradigma funcional, uma função em JS é um cidadão de primeiro nível, é um valor, e assim como qualquer valor, pode ser passado como argumento, retornado, armazenado em estruturas de dados, etc.
No código: elemento.click(removeLinha)
você não está chamando ou executando a função removeLinha
, você está passando ela como argumento do método click
, como se fosse qualquer valor, como um número, string, objeto...
JavaScript também é uma linguagem assíncrona, o que significa que em muitos casos ela não vai travar esperando o resultado de uma operação demorada, por exemplo para fazer uma requisição na rede. Exemplificando:
Acesso a dados na rede linguagem síncrona:
dados = requisicao('http://dados.com/vendas')
mostra(dados)
mostra('FIM')
Repare que a requisição será feita, e a chamada bloqueará a execução do programa até que os dados sejam retornados e possam ser consumidos. Primeiro os dados serão mostrados, em seguida a mensagem "FIM".
Acesso a dados na rede linguagem assíncrona:
funcao mostraNaTela(dados) {
mostra(dados)
}
requisicao('http://dados.com/vendas', mostraNaTela)
mostra('FIM')
Primeiro declaramos uma função que deve receber dados
como argumento, quando ela for chamada, mostrará os dados que recebeu.
Fazemos uma requisição, mas neste caso não estamos retornando o resultado para uma variável, isto porque essa função não vai esperar o resultado para prosseguir com a execução. Você chamou a função requisicao
, e ela retorna imediatamente sem os dados, desta maneira seu programa não bloqueia, assim será mostrado na tela "FIM".
Como segundo argumento da função requisicao
, passamos uma função. Quando os dados já estiverem prontos para serem consumidos, a função requisicao
saberá chamar de volta a sua função mostraNaTela
e passará o resultado como argumento para mostraNaTela
.
Neste segundo caso, primeiro será mostrado na tela "FIM" e em seguida (caso não haja erro) os dados.
Geralmente chamamos essa função que passamos como argumento de callback, pois ela será chamada de volta.
Em relação à função click, é mais ou menos isso que acontece, ela vai adicionar sua função como ouvinte de eventos de clique naquele elemento, quando o elemento for clicado ele vai emitir um evento, sua função como ouvinte será chamada já recebendo um objeto event
como argumento.
Lembrando que você pode passar essa função de argumento como uma função anônima, sem precisar declará-la:
linha
.find('.botao-remover')
.click(function (ev) {
ev.preventDefault()
$(this).parent().parent().remove()
})