O melhor professor que tive a satisfação de estar aprendendo esta linguagem, muito obrigado por compartilhar seu conhecimento de forma tão didática, serei eternamente agradecido.
Tô assistindo o vídeo e tá um pouco mais fácil de entender do que no curso que estou fazendo. Você deixou isso um pouco mais simples. Tô apanhando ainda mas já consegui ir um pouquinho além por conta do seu vídeo. Obrigado!
Parabéns por essas aulas. Elas são bem explicadas e detalhadas. Essa aula em particular me ajudou muito a entender alguns erros que eu estava cometendo em uma/programa que estou desenvolvendo para treinar JS.
Bom, sou novo no canal... E adorei as aulas, muito boas! Eu tenho uma dúvida cruel, aquele programa o iMacros, ele trabalha em script? Assim, se eu montar um script e colocar para rodar nele num determinado site, para ele fazer as funções nesse site, vai funcionar? Pow, me ajuda ai...! Parabéns pelo trabalho!
perfeito...me ajudou pra fazer o onmouseover nos menu. Agora o menu quando passo o mouse, ele se desloca ao aparecer a imagem, q eu associei nessa passada. Como deixar o menu fixo ao passar o mouse??
Depois de muitos dos meus neurônios terem sidos queimados consegui entender a lógica. Veja: 1 - Uma variável local não pode ser utilizada no escopo global, ok... 2 - Os parâmetros não podem ser utilizados diretamente no escopo global, ok... A chave pra entender é: Uma variável local não está disponível no escopo global ENQUANTO A FUNÇÃO QUE A CRIOU NÃO FOR CHAMADA/INVOCADA. Isso significa que: A partir do momento que a function foi chamada, as suas variáveis passam a ficar disponíveis no escopo global. (Não me pergunte o porquê, mas é assim que funciona). Uma pequena observação: as variáveis ficam disponíveis, mas os parâmetros não. Exemplo certo: function name (parametro){ variavel1 = 10; // Vai ficar disponível no escopo global quando a function for chamada/invocada no código. variavel2 = 5; // Vai ficar disponível no escopo global quando a function for chamada/invocada no código. } name( ); // Aqui eu chamei a função pelo nome, o que torna as suas variáveis disponíveis no global. alert(variavel1); // Aqui eu pude invocar a variável diretamente porque, por ter chamado a função que criou ela, ela ficou disponível no global. alert(variavel2); // A mesma lógica: chamar uma função é igual a tornar suas variáveis disponível no global. Se você copiar e colar esse código, vai ver que vai funcionar. Pode testar, eu testei isso mil vezes kkkk. Exemplo errado: function name (parametro){ variavel1 = 10; variavel2 = 5; } name( ); // Aqui eu chamei a função pelo nome, o que torna as suas variáveis disponíveis no global. alert(parametro); // Errado! Um parâmetro nunca pode ser invocado diretamente, mesmo que a função que o criou tenha sido chamada. Esse código de cima não vai funcionar pelo simples fato de que só as variáveis locais da função ficam disponíveis no global após a sua chamada, os parâmetros não ficam! A situação que foi apresentada ali no final foi a seguinte: ele criou uma função com 1 parâmetro " function alerta (mensagem) " e também 1 variável " { msglocal = mensagem; } ". Logo em seguida, ele faz a chamada/invocação da function " alerta('Texto aqui'); ". No final, ele dá uma instrução com estabelecendo como dados uma variável que foi recentemente disponibilizada (pela invocação da function) no escopo global... Ficou assim: function alerta (mensagem){ msglocal = mensagem; } alerta('Texto aqui'); // Olha a chamada da function aqui, tornando a variável "msglocal" uma variável local disponibilizada no global. alert(msglocal); O que aconteceu ai, no final das contas, é simples: A variável "msglocal", a partir do momento que sua function foi chamada, tornou-se disponível no escopo global. Por essa razão, se eu utilizar uma instrução com ela, mesmo sendo uma variável local, ela será reconhecida, a final de contas, ela ficou "visível" no escopo global". Agora, experimenta tirar a chamada da function: function alerta (mensagem){ msglocal = mensagem; } // A chamada da function que estava exatamente nesse lugar, não está mais. alert(msglocal); Esse código acima NÃO FUNCIONA. A razão é a regra que estou explicando desde o começo: A chamada de uma function torna as suas variáveis locais disponíveis no escopo global (as variáveis, não os parâmetros). Ok... Já entendemos que a chamada da function torna suas variáveis locais disponíveis no escopo global, mas a questão é: o que está sendo exibido no alerta é a mensagem que foi definida dentro do parâmetro, e não do variável local, então como isso acontece? A partir do momento que uma variável local está disponibilizada no escopo global (por ter sua function invocada), basta que essa variável local disponibilizada me dê autorização de acesso ao parâmetro (que até então está dentro do escopo local). Como fazer isso? Exatamente como foi feito no vídeo: defina o valor da variável como sendo o mesmo do parâmetro. Exemplo: function name (parametro){ variavel = parametro; } Isso tira o parâmetro do escopo local e coloca no escopo global, assim como acontece com as variáveis quando sua function é invocada? Não. Definitivamente não. Dá para provar que não é possível da seguinte forma: Se você tentar dar uma instrução direcionada diretamente a um parâmetro, mesmo que sua function tenha sido chamada, não irá funcionar. Exemplo: function name (parametro){ variavel = parametro; } name( ); // Chamada da function aqui. alert(parametro); // Instrução com parâmetro aqui Esse código acima não funciona, graças a nossa regra: A chamada de uma function torna suas variáveis locais disponíveis no global. As variáveis, não os parâmetros. Mas então porque o código do vídeo funciona? Porque ali foi criada uma "autorização", dada pela própria variável local, de acessar o parâmetro daquela function. Resumindo, basicamente você precisa de duas autorizações para utilizar um parâmetro em uma instrução global: 1) uma autorização para acessar as variáveis locais de uma function e outra para acessar os parâmetros locais daquela mesma function. Veja: function alerta (mensagem){ msglocal = mensagem; // Olha a autorização que eu to falando aqui... } alerta('Texto aqui'); alert(msglocal); Para provar que uma variável local disponibilizada no global pode te dar acesso ao parâmetro e seu valor, pode testar e ver que, independente de onde você defina o valor do parâmetro (seja no próprio parâmetro, seja na hora da chamada/invocação) o código vai funcionar. Veja 1 : function alerta (mensagem){ msglocal = mensagem;
} alerta('Aqui está a definição do valor do parâmetro mensagem'); alert(msglocal); // Copie e cole, esse código vai funcionar. Veja 2 : function alerta (mensagem = 'Aqui está a definição do valor do parâmetro mensagem'){ msglocal = mensagem;
} alerta( ); alert(msglocal); // Apesar de ter definido o valor diretamente no parâmetro, vai funcionar perfeitamente. Isso não funcionaria se o "msglocal" não tivesse "autorizando" o acesso ao parâmetro). Em resumo, eu consigo acessar diretamente o parâmetro (variável local) de uma função pelo global se: 1) uma variável local da function for disponibilizada no global e; 2) Essa variável local disponibilizada me der autorização para isso; No final, a regra se resume só a essas duas linhas que acabei de escrever... Acredito que os navegadores sequer fazem a leitura de uma function enquanto não forem chamadas, o que faz sentido para não ter que ficar carregando scripts que não vão ser utilizados, então, eles fazem a leitura de uma function, somente depois de terem encontrado uma chamada dela "name( );" Por essa razão as variáveis ficam disponíveis só após a chamada (Mas isso é só o que eu penso). Resolvi explicar porque me ajuda a solidificar toda essa lógica na minha cabeça, obrigado por ser minha cobaia. kkkkk.
@@juliomqsmsg mano faz o seguinte : eu tmb buguei e desisti ,mas isso já faz um ano ,na época eu parei e fui pro PYTHON sugiro que vc faça o mesmo(o pyton é uma linguagem muito mais fácil ) ,agora já compreendo o básico do pyton (que continuo estudando) e voltei pro JS mais seguro e sabendo de quase todo os conteudos que estão sendo dados aq nesse curso (tendo que até pular coisas que já sei) o importante é não desanimar . abraços e espero que não desista .
Há bibliotecas para desenvolvimentos de jogos, com o Node JS e possível trabalhar também no Server Side, ciência de dados, machine learning e várias outras coisas
Pode utilizar a função random() assim const n = function (n1, aleatorio){ return n1 + Math.floor(Math.random() * aleatorio + 1) } console.log(n(8, 100))
Como faço pra delimitar o escopo da variável pra dentro da função? (sem ser pelos parâmetros) como faria pra que a variável msglocal ficasse inacessível ao escopo externo?
Creio que seja uma pergunta bem válida, acredito que deve ter um motivo para funcionar da forma que é mas que não faz sentido ela ficar global, não faz mesmo, se ela é declarada dentro da função deveria ficar só por lá mesmo. Para ter acesso externo só usando um return pra passar a variavel pra fora, mas ... se é assim, que seja.
Não tem um comando com entrada de dados? por exemplo: escreva valor de a= 10000 escreva valor de b= 5 function rendaPerCaptaFamiliar (rendaFamiliar, quantidadeDeMembrosDaFamilia) { return rendaFamiliar/quantidadeDeMembrosDaFamilia; } rendaPerCaptaFamiliar(a, b);
quando você omite a palavra "var" isso significa que está declarando uma variavel de escopo global. a diferença entre "msglocal = mensagem;" e "var msglocal = mensagem;" é que a primeira declaração está sendo de escopo global, chama-se de declaração implicita.
hoje você é um tijolo que constrói meu futuro, obrigado!
Quanta gratidão, digo o mesmo.
Poooxa com certeza velho
Eu sou do futuro e gostaria de saber se você Ainda é programador
Ele já tem um curso completo de Jquery. RB Tech como sempre nos ajudando de forma simples e direta. Muito obrigado !
O melhor professor que tive a satisfação de estar aprendendo esta linguagem, muito obrigado por compartilhar seu conhecimento de forma tão didática, serei eternamente agradecido.
Tô assistindo o vídeo e tá um pouco mais fácil de entender do que no curso que estou fazendo. Você deixou isso um pouco mais simples. Tô apanhando ainda mas já consegui ir um pouquinho além por conta do seu vídeo. Obrigado!
Em pleno 2019, quebrando a cabeça em JS, o YT me indica o wix!
A didtática desse professor é perfeita, sem exagero, o cara sabe explicar muito bem. Gratidão amigo!
Maravilha de explicação. Que Deus abençoe sua vida!
Cara você sempre explica muito bem...
Cara, que aula maravilhosa. Obrigado!!
nossa...pela primeira vez eu entendi que um parâmetro é uma variável!!! Adorei sua explicação de função...
Show de bola! Bom conteúdo!
Muito bom .... pena que pararam de produzir conteudo ... esses videos estao me ajudando bastante!
Parabéns por essas aulas. Elas são bem explicadas e detalhadas. Essa aula em particular me ajudou muito a entender alguns erros que eu estava cometendo em uma/programa que estou desenvolvendo para treinar JS.
Muito obrigada pelo vídeo! Estava com dificuldade pra enter a aplicação e criação das funções e esse vídeo foi bem esclarecedor !
Sensacional, vou arrumar emprego por sua causa!!
simples e direto, mt bom
to acostumando com pascal, e JS é bem facil, não senti dificuldade
Você é perfeito, suas aulas estão me ajudando muito! Muito obrigada
Muito esclarecedor, ótima didática
Excelente, finalmente entendi funções.
Muito claro, valeu mestre
As aulas são excelentes. Só gostaria que o tamanho da fonte estivesse maior para que eu pudesse enxergar melhor.
por ser iniciante entendi parcialmente. E ter somente um celular como ambiente de trabalho é horrível.
Muito bom ! Vc é um dos melhores.
meu cérebro bugou na function ;(
Está de parabéns pela aula de funções.
Mas acho que faltou exemplos de funções anônimas...
Excelente Professor ! Parabéns !!!!
muito boa a aula, esperando pelas próximas
Olha cara, eu tava entendendo de boas até essa parte de escopo de variável...
tô vindo do java então tô tendo uma certa facilidade com essa parte só tive algumas dúvidas desses objetos no js
Muito bom tô finalmente tentando entender. É confuso mas acredito que seja a falta de prática.
Ótimo conteúdo.
Muito bom o conteúdo.
Excelente aula!
#Excelente!
pode fazer curso de Jquerry depois?
Olá Ricardo muito obrigado por nos ensinar, por favor se for possível? usar uma fointe maior está difícil de enchergar
Para uma boa visualização precisa colocar em tela cheia e usar um monitor FullHD
DA UM ZOOM NA TELA AMIGO. Do Pc já esta pequeno. imagina quem assiste do celular. Abraços
Bom, sou novo no canal... E adorei as aulas, muito boas! Eu tenho uma dúvida cruel, aquele programa o iMacros, ele trabalha em script? Assim, se eu montar um script e colocar para rodar nele num determinado site, para ele fazer as funções nesse site, vai funcionar? Pow, me ajuda ai...! Parabéns pelo trabalho!
pode falar sobre as funções anônimas no JavaScript ? sempre me causam dúvidas !
perfeito...me ajudou pra fazer o onmouseover nos menu. Agora o menu quando passo o mouse, ele se desloca ao aparecer a imagem, q eu associei nessa passada. Como deixar o menu fixo ao passar o mouse??
Muito obrigado!
DEUS TE ABENÇOE
escopo de variável dá nó no cérebro.
super buguei! hahaha :(
Depois de muitos dos meus neurônios terem sidos queimados consegui entender a lógica. Veja:
1 - Uma variável local não pode ser utilizada no escopo global, ok...
2 - Os parâmetros não podem ser utilizados diretamente no escopo global, ok...
A chave pra entender é: Uma variável local não está disponível no escopo global ENQUANTO A FUNÇÃO QUE A CRIOU NÃO FOR CHAMADA/INVOCADA.
Isso significa que: A partir do momento que a function foi chamada, as suas variáveis passam a ficar disponíveis no escopo global. (Não me pergunte o porquê, mas é assim que funciona).
Uma pequena observação: as variáveis ficam disponíveis, mas os parâmetros não.
Exemplo certo:
function name (parametro){
variavel1 = 10; // Vai ficar disponível no escopo global quando a function for chamada/invocada no código.
variavel2 = 5; // Vai ficar disponível no escopo global quando a function for chamada/invocada no código.
}
name( ); // Aqui eu chamei a função pelo nome, o que torna as suas variáveis disponíveis no global.
alert(variavel1); // Aqui eu pude invocar a variável diretamente porque, por ter chamado a função que criou ela, ela ficou disponível no global.
alert(variavel2); // A mesma lógica: chamar uma função é igual a tornar suas variáveis disponível no global.
Se você copiar e colar esse código, vai ver que vai funcionar. Pode testar, eu testei isso mil vezes kkkk.
Exemplo errado:
function name (parametro){
variavel1 = 10;
variavel2 = 5;
}
name( ); // Aqui eu chamei a função pelo nome, o que torna as suas variáveis disponíveis no global.
alert(parametro); // Errado! Um parâmetro nunca pode ser invocado diretamente, mesmo que a função que o criou tenha sido chamada.
Esse código de cima não vai funcionar pelo simples fato de que só as variáveis locais da função ficam disponíveis no global após a sua chamada, os parâmetros não ficam!
A situação que foi apresentada ali no final foi a seguinte: ele criou uma função com 1 parâmetro " function alerta (mensagem) " e também 1 variável " { msglocal = mensagem; } ".
Logo em seguida, ele faz a chamada/invocação da function " alerta('Texto aqui'); ".
No final, ele dá uma instrução com estabelecendo como dados uma variável que foi recentemente disponibilizada (pela invocação da function) no escopo global...
Ficou assim:
function alerta (mensagem){
msglocal = mensagem;
}
alerta('Texto aqui'); // Olha a chamada da function aqui, tornando a variável "msglocal" uma variável local disponibilizada no global.
alert(msglocal);
O que aconteceu ai, no final das contas, é simples:
A variável "msglocal", a partir do momento que sua function foi chamada, tornou-se disponível no escopo global. Por essa razão, se eu utilizar uma instrução com ela, mesmo sendo uma variável local, ela será reconhecida, a final de contas, ela ficou "visível" no escopo global".
Agora, experimenta tirar a chamada da function:
function alerta (mensagem){
msglocal = mensagem;
}
// A chamada da function que estava exatamente nesse lugar, não está mais.
alert(msglocal);
Esse código acima NÃO FUNCIONA. A razão é a regra que estou explicando desde o começo: A chamada de uma function torna as suas variáveis locais disponíveis no escopo global (as variáveis, não os parâmetros).
Ok... Já entendemos que a chamada da function torna suas variáveis locais disponíveis no escopo global, mas a questão é: o que está sendo exibido no alerta é a mensagem que foi definida dentro do parâmetro, e não do variável local, então como isso acontece?
A partir do momento que uma variável local está disponibilizada no escopo global (por ter sua function invocada), basta que essa variável local disponibilizada me dê autorização de acesso ao parâmetro (que até então está dentro do escopo local).
Como fazer isso?
Exatamente como foi feito no vídeo: defina o valor da variável como sendo o mesmo do parâmetro.
Exemplo:
function name (parametro){
variavel = parametro;
}
Isso tira o parâmetro do escopo local e coloca no escopo global, assim como acontece com as variáveis quando sua function é invocada? Não. Definitivamente não. Dá para provar que não é possível da seguinte forma:
Se você tentar dar uma instrução direcionada diretamente a um parâmetro, mesmo que sua function tenha sido chamada, não irá funcionar.
Exemplo:
function name (parametro){
variavel = parametro;
}
name( ); // Chamada da function aqui.
alert(parametro); // Instrução com parâmetro aqui
Esse código acima não funciona, graças a nossa regra: A chamada de uma function torna suas variáveis locais disponíveis no global. As variáveis, não os parâmetros.
Mas então porque o código do vídeo funciona?
Porque ali foi criada uma "autorização", dada pela própria variável local, de acessar o parâmetro daquela function.
Resumindo, basicamente você precisa de duas autorizações para utilizar um parâmetro em uma instrução global: 1) uma autorização para acessar as variáveis locais de uma function e outra para acessar os parâmetros locais daquela mesma function.
Veja:
function alerta (mensagem){
msglocal = mensagem;
// Olha a autorização que eu to falando aqui...
}
alerta('Texto aqui');
alert(msglocal);
Para provar que uma variável local disponibilizada no global pode te dar acesso ao parâmetro e seu valor, pode testar e ver que, independente de onde você defina o valor do parâmetro (seja no próprio parâmetro, seja na hora da chamada/invocação) o código vai funcionar.
Veja 1 :
function alerta (mensagem){
msglocal = mensagem;
}
alerta('Aqui está a definição do valor do parâmetro mensagem');
alert(msglocal);
// Copie e cole, esse código vai funcionar.
Veja 2 :
function alerta (mensagem = 'Aqui está a definição do valor do parâmetro mensagem'){
msglocal = mensagem;
}
alerta( );
alert(msglocal);
// Apesar de ter definido o valor diretamente no parâmetro, vai funcionar perfeitamente. Isso não funcionaria se o "msglocal" não tivesse "autorizando" o acesso ao parâmetro).
Em resumo, eu consigo acessar diretamente o parâmetro (variável local) de uma função pelo global se:
1) uma variável local da function for disponibilizada no global e;
2) Essa variável local disponibilizada me der autorização para isso;
No final, a regra se resume só a essas duas linhas que acabei de escrever...
Acredito que os navegadores sequer fazem a leitura de uma function enquanto não forem chamadas, o que faz sentido para não ter que ficar carregando scripts que não vão ser utilizados, então, eles fazem a leitura de uma function, somente depois de terem encontrado uma chamada dela "name( );" Por essa razão as variáveis ficam disponíveis só após a chamada (Mas isso é só o que eu penso).
Resolvi explicar porque me ajuda a solidificar toda essa lógica na minha cabeça, obrigado por ser minha cobaia. kkkkk.
@@LucasEduardo-tg2es agradeço a explanação,.mas faz tempo que parei de estudar... Buguei e desanimei.
@@juliomqsmsg Isso buga a gente mesmo kkkkk. Vlw irmão, tmj.
@@juliomqsmsg mano faz o seguinte : eu tmb buguei e desisti ,mas isso já faz um ano ,na época eu parei e fui pro PYTHON sugiro que vc faça o mesmo(o pyton é uma linguagem muito mais fácil ) ,agora já compreendo o básico do pyton (que continuo estudando) e voltei pro JS mais seguro e sabendo de quase todo os conteudos que estão sendo dados aq nesse curso (tendo que até pular coisas que já sei) o importante é não desanimar . abraços e espero que não desista .
Maravilhooooso
bora 3 aula
Esse lance da variável declarada dentro da função ter escopo global não faz sentido, tem alguma explicação pra ser assim?
aleḿ de uns efeitos visuais legais, aliado do CSS, o q mais o JS é util?
Há bibliotecas para desenvolvimentos de jogos, com o Node JS e possível trabalhar também no Server Side, ciência de dados, machine learning e várias outras coisas
15:22 linha 20 o alert ta escrito errado, não?
11:08 e se eu quiser colocar um numero aleatório oqueu faço?
Pode utilizar a função random() assim
const n = function (n1, aleatorio){
return n1 + Math.floor(Math.random() * aleatorio + 1)
}
console.log(n(8, 100))
Como faço pra delimitar o escopo da variável pra dentro da função? (sem ser pelos parâmetros)
como faria pra que a variável msglocal ficasse inacessível ao escopo externo?
Creio que seja uma pergunta bem válida, acredito que deve ter um motivo para funcionar da forma que é mas que não faz sentido ela ficar global, não faz mesmo, se ela é declarada dentro da função deveria ficar só por lá mesmo. Para ter acesso externo só usando um return pra passar a variavel pra fora, mas ... se é assim, que seja.
Não tem um comando com entrada de dados? por exemplo:
escreva valor de a= 10000
escreva valor de b= 5
function rendaPerCaptaFamiliar (rendaFamiliar, quantidadeDeMembrosDaFamilia)
{
return rendaFamiliar/quantidadeDeMembrosDaFamilia;
}
rendaPerCaptaFamiliar(a, b);
a entrada de dados você faz pelos formulários do html e usa o javascript para puxar o valor dos campos
O " dividir " na parte alerta aque no meu sublim ta ficando azul e não ta executando.
pq a variável msg é declarada e a variável msglocal não?
quando você omite a palavra "var" isso significa que está declarando uma variavel de escopo global. a diferença entre "msglocal = mensagem;" e "var msglocal = mensagem;" é que a primeira declaração está sendo de escopo global, chama-se de declaração implicita.
@@wellsilva174 valeu!
Ele deveria ter citado isso no vídeo.
FODAAAAAAAAAAAAAAAAAAAAA
otimo ob
uri xará xarás
Não consigo visualizar nada!
faz hacking com kali linux
negocio tem nada ver mano aehuaehua mas procura o canal do koshimaru kisara..