Funções do JavaScript: funções principais, funções de seta com projetos | Faisal Memon | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Funções do JavaScript: funções principais, funções de seta com projetos

teacher avatar Faisal Memon, Product | Engineer | Entrepreneur

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Introdução ao curso

      2:13

    • 2.

      Como desbloquear funções do JavaScript: os fundamentos

      6:22

    • 3.

      Fluxo de dados dinâmico: dominando parâmetros e argumentos

      21:47

    • 4.

      Resultados de função revelados: explicação dos valores de retorno

      15:47

    • 5.

      Como criar código: explorando expressões de função em JavaScript

      6:15

    • 6.

      Fundamentos modernos do Javascript: dominando as funções de seta

      9:18

    • 7.

      Empoderando objetos: aproveitando funções dentro

      14:35

    • 8.

      Matrizes de supercarga: métodos avançados em JavaScript

      28:44

    • 9.

      Projeto em destaque: crie seu próprio conversor de unidades

      24:12

    • 10.

      Apresentação de projetos: crie um aplicativo de lista de afazeres dinâmico com JavaScript

      29:26

    • 11.

      Conclusão do curso

      1:52

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

91

Estudantes

1

Projeto

Sobre este curso

As funções são os blocos de construção do JavaScript, tornando seu código reutilizável, eficiente e modular. Neste curso, você vai se aprofundar em funções, métodos e projetos reais para solidificar suas habilidades em JavaScript por meio de aprendizado prático.

Este curso para iniciantes vai guiar você passo a passo, desde a compreensão dos conceitos básicos de função até sua aplicação em projetos práticos, como um conversor de unidades e um aplicativo de lista de tarefas.

O que você vai aprender:

Funções Javascript — aprenda a declarar e usar funções de forma eficaz.
Trabalhando com parâmetros e argumentos - entenda como passar valores em funções de forma dinâmica.
Retornar valores e expressões de função — domine como as funções processam e retornam dados.
Funções de seta — escreva funções modernas e concisas com a sintaxe ES6+.
Funções dentro de objetos — aprenda a estruturar objetos com funções integradas.
Métodos de matriz — descubra como as funções interagem com as matrizes para manipular dados.
Projetos práticos — crie aplicativos do mundo real, como um conversor de unidades e um aplicativo de lista de tarefas, para aplicar seu conhecimento em cenários práticos.

Por que fazer este curso?

  • Para iniciantes — não é necessário ter experiência anterior! Aprenda funções de Javascript do zero.
  • Abordagem prática — reforce a aprendizagem com exercícios interativos e projetos práticos.
  • Aplicativo do mundo real — use funções para criar aplicativos dinâmicos e úteis.

Ao final deste curso, você terá uma forte compreensão das funções do JavaScript, uma compreensão mais profunda de como elas funcionam e projetos reais para adicionar ao seu portfólio!

Conheça seu professor

Teacher Profile Image

Faisal Memon

Product | Engineer | Entrepreneur

Professor

Hey - this is Faisal and thanks for being here.

I have over 12 years of experience working as a Product Manager Founder/CEO Engineer in Mobile and App development industry. I have been building global products being used by millions of users across the globe since the beginning of my career.

Currently I am heading Product at one of the fast-paced startup in India and enjoying every moment of it. Prior to his, I built out couple of startups which had over half a million users across the globe, raised funding from Google other investors and was part of Google Launchpad Accelerator. I have experience of building products from scratch and scaling to global users.

I am here on Skillshare to share my knowledge with seekers and help them grow personally and professional... Visualizar o perfil completo

Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução ao curso: Oi, aí. Bem-vindo às pontuações das funções de JavaScript ao criar projetos reais. Meu nome é Wessel e estou entusiasmado em guiá-lo nessa empolgante jornada pelo mundo das funções de JavaScript. As funções são a espinha dorsal do JavaScript ou de qualquer linguagem de programação que você aprenda Ele permite um código eficiente e modular que os desenvolvedores podem escrever. E neste curso, mergulharemos nesse conceito de funções, desde o básico da definição e chamada de funções até a compreensão de parâmetros e argumentos Também falaremos sobre o básico, como chamar funções, para tópicos avançados, como expressões, funções de seta e até métodos em objetos e matrizes. Agora, aqui está o que abordaremos. Falaremos sobre funções em JavaScript. Também falaremos sobre parâmetros e argumentos. O que são parâmetros e como esses dois termos se diferenciam Como você pode retornar valores de uma função ? Aqui, falaremos sobre como função processa dados e retorna os valores. Falaremos sobre expressões de funções e funções de seta. Esse é um dos tópicos cruciais em que os alunos geralmente enfrentam dificuldades Também falaremos sobre funções dentro objetos e métodos de matriz. Então, isso é tudo sobre o curso, e este curso também tem projetos práticos nos quais aplicaremos tudo o que aprendemos nesse curso específico para criar algo significativo No final, você terá uma compreensão robusta do que são funções, e esse conhecimento o capacitará a criar interativos e incríveis de jaw Script Este curso é adequado para desenvolvedores de todos os níveis. Portanto, se você é um aluno iniciante, intermediário ou alguém avançado que deseja aprimorar suas habilidades em Jascript, este curso pode equipá-lo com conhecimentos incríveis e algumas práticas que você nunca ouviu Dito isso, você está pronto para dominar a arte das funções do Ja Script e transformar a maneira como você escreve Vamos começar juntos. Te vejo do outro lado. 2. Como desbloquear funções do JavaScript: os fundamentos: Olá, agora é hora de começarmos a falar sobre funções em JavaScript. Agora, o que é uma função em primeiro lugar? Agora, uma função é essencialmente um bloco de código. Portanto, são várias linhas de código agrupadas e projetadas para executar uma tarefa específica A melhor parte da função é que ela pode ser reutilizada várias vezes no programa Agora, deixe-me mostrar como você escreveria funções e por que escreveria, então. Está bem? Então, digamos que temos uma tarefa muito simples de cumprimentar um usuário Está bem? Então, vou dizer olá e digamos que estou cumprimentando um usuário nome de usuário é Alice Awa. Está bem? Estou fazendo isso. Agora, digamos que eu queira fazer essa saudação três vezes. Está bem? Então, é claro, copiarei P três vezes. Então, vou cumprimentá-lo três vezes, certo? Cumprimentando o usuário três vezes. Agora, digamos que eu queira mudar uma mensagem aqui na saudação, certo? E isso deve ser refletido em todas as mensagens. Então, digamos que a mudança que eu gostaria de fazer é adicionar mais uma exclamação Está bem? Agora eu tenho que me certificar de atualizar isso em todos os lugares onde quer que eu esteja usando essa grade E se eu salvar isso, vou ver a saída aqui. Tudo bem Mas agora está tudo bem se o grupo de declarações como aqui, a tarefa é apenas cumprimentar, certo? É apenas uma única declaração, e qualquer alteração aqui é gerenciável porque a base de código não é tão grande Agora, o que eu gostaria de fazer é optar pela conveniência, certo? E podemos facilitar isso com a ajuda da função. Agora, deixe-me mostrar como as funções podem facilitar sua vida. Então, primeiro de tudo, eu preciso criar uma função aqui para que possamos usá-la. Então, eu posso usar essa palavra-chave de função. Você pode ver. E você tem duas opções, declaração de função e função aqui. Se você selecionar a função, ela trará a função para você, a palavra-chave. Mas eu gostaria de ter a declaração da função. Então você pode ver que isso apareceu. Agora, ele adiciona automaticamente um espaço reservado para parâmetros de nome e adicionou essas chaves , certo Então, vou atualizar o nome aqui para cumprimentar, ok? E no lugar dos parâmetros, vou remover isso por enquanto e vou entrar no corpo Então, essa cinta encaracolada, ok? Dentro desses aparelhos ondulados, você pode ter o corpo funcional, certo Eu uso esse termo corpo funcional. Agora, o que é corpo funcional? corpo da função é o bloco de código que pode ser executado quando essa função é chamada, ok? Então, digamos que eu mova esse código para cá. Ok. E agora não preciso chamar a saudação dessa maneira ou cumprimentar o usuário dessa Ok. Em vez disso, o que eu posso fazer é chamar essa função, certo? Então agora eu tenho essa função greet, ok? O nome da função é greet. Então, cada função que você cria deve ter um nome, ok? E você está atribuindo um nome a ela porque precisa chamar essa função mais tarde, certo? Então, agora, se eu quiser chamar essa função, direi greet e terei colchetes redondos abrindo e Agora, se eu salvar isso, você verá que Hello Alice está sendo impressa aqui, ok? Se eu quiser cumprimentar o usuário três vezes, como meu requisito original, posso fazer com que isso seja chamado três vezes e você verá que aparece Agora, se eu quiser mudar a mensagem, digamos que se eu quiser me livrar dessa exclamação extra que foi adicionada, eu tenho que fazer essa alteração em apenas um lugar, certo E isso se reflete em todos os lugares, e é refletido em todos os lugares, essencialmente, onde quer que essa função esteja sendo chamada, ou porque é o único bloco de código que está sendo reutilizado e chamado várias vezes Aqui, nessa abordagem, o que você está fazendo é duplicar o código Você está duplicando o log de pontos do console três vezes para que essa tarefa aconteça três vezes, certo Mas aqui, você não está duplicando o código. Você está gravando o log de pontos do console uma vez. Mas se você quiser fazer essa tarefa três vezes, você está chamando a função duas vezes porque essa instrução dot log do console está dentro de uma função agora. Tudo bem? Então, vamos voltar à definição. Uma função é um bloco de código. Você pode ver que isso é um bloco de código. Agora você pode ter várias declarações aqui. Digamos que eu também queira cumprimentar o usuário e dizer que agora você está logado Ok, algo parecido com isso. Estou exibindo esse tipo de mensagem. Está bem? Você pode ver Olá Alice, agora você está logado Olá Alice, agora você está logado. Olá Alice, agora você está trancada. Está chegando três vezes em cada mensagem. Está bem? Portanto, é um bloco de código. Agora, dentro das chaves Curly, você pode ter várias linhas de instrução, várias linhas de código JavaScript, que fazem parte dessa função e são invocadas ou chamadas sempre que essa função está sendo chamada sempre que essa função está sendo E a próxima parte diz que ele foi projetado para realizar uma tarefa específica. Basicamente, você está agrupando várias instruções e as nomeando como função, e isso foi projetado para executar uma tarefa específica Por exemplo, aqui, ele foi projetado para cumprimentar o usuário, certo? E você está usando essa palavra-chave de função aqui. Isso é algo que você não pode perder se você estiver criando funções dessa forma, certo? E ele pode ser reutilizado várias vezes. Agora você está chamando esse bloco de código três vezes aqui, certo? Nem uma, duas vezes. E você pode ligar para ele várias vezes, como o número de vezes que deseja ligar ou se o requisito é. Certo? Então essa é uma função para você em JavaScript. Agora, se você vem de qualquer outra linguagem de programação como Python ou Java, você deve estar ciente desse conceito de função ou método, certo Então, funciona da mesma forma em JavaScript, mas a sintaxe é um pouco diferente Tudo bem? Então, espero que isso tenha sido útil. 3. Fluxo de dados dinâmico: dominando parâmetros e argumentos: No momento, eu tenho uma função chamada GET, que é usada para cumprimentar os usuários E aqui neste bloco de código, estou tendo toda a operação de cumprimentar os usuários E a operação é que há algumas instruções de impressão, como instruções de log do console que imprimem duas mensagens, duas mensagens distintas no console. Estou chamando essa função três vezes. E, como resultado, você está vendo seis mensagens sendo impressas no console, certo? Agora, aqui, a mensagem que você está vendo é bastante estática. E se, no futuro, eu quiser personalizar a mensagem para cada usuário e se eu quiser chamar cada usuário pelo nome? Porque essa função no momento está sendo usada apenas para cumprimentar Alice e não qualquer outro usuário Então, nesse caso, o JavaScript permite que você passe parâmetros de função como qualquer outra linguagem de programação. Então, digamos que eu queira ter um nome dinâmico, ok? Então eu posso aceitar o nome aqui. Tudo bem. Não estou especificando o tipo de dados, faça uma anotação aqui E aqui, em vez de Alice, o que estou fazendo é ganhar $1, então vou ter que adicionar $1 e vou dizer Desculpe, não Alice, eu vou ter um nome. E então isso será um modelo lateral, como este. Tudo bem. E então, se eu salvar isso, vou receber um erro dizendo indefinido, porque esse nome ainda não está sendo inicializado, certo Então, faremos isso em breve. Mas o ponto que eu quero mencionar aqui é essa coisa que você está passando aqui, nome é um parâmetro de função. Está bem? Agora, para chamar a função da maneira correta com parâmetros, você precisa passar algo chamado de argumentos, certo? Então, aqui, agora teremos que passar os argumentos da função porque o nome está sendo indefinido. Você pode ver indefinido Está imprimindo três vezes, e todas as três vezes, é indefinido, certo Então eu vou passar o nome aqui, para que eu possa dizer Alice uma vez, então eu posso dizer John, e então eu posso dizer Lucy, certo E se eu salvar isso, você verá Olá Alice, Olá John e Olá Lucy, certo Então essa coisa aqui é uma discussão, ok? Esses são argumentos de função que estou passando para os parâmetros da função. Então, por que estamos apresentando os argumentos? Porque a função está aceitando parâmetros. E aqui você pode ver que nome é o nome do parâmetro que desejamos inicializar aqui, ok? E então isso está sendo usado dentro da função qualquer forma que a função deseje fazer uso dela Então, eu quero que todos vocês se lembrem da diferença entre parâmetros e argumentos. Ambos não são iguais, certo. Então, a maioria dos programadores fica confusa e eu não sei qual é a diferença entre um parâmetro e o argumento Eles acham que são iguais, certo? Então, essa coisa aqui é um parâmetro. Se você passar o mouse sobre isso, ele dirá o nome do parâmetro. E essa coisa aqui é um argumento porque esse é um valor que você está passando e usando esse valor, o parâmetro é realmente inicializado Então isso é uma discussão. Tudo bem. Então, esse argumento de função está em uso, e esses são os parâmetros da função que estão sendo declarados. Tudo bem? Agora, essa é uma função com um parâmetro. Haverá cenários em que você deseja passar vários valores, vários argumentos para uma função, certo? Então, nesse caso, é claro que você pode ter vários parâmetros. Aqui, eu posso adicionar H aqui, e eu posso adicionar mais um log do console aqui. OK. Você é de ou, eu diria, vamos imprimir o Ho. Ok, algo assim, e eu vou me livrar das vírgulas invertidas aqui e vou adicionar carrapatos Bac. Tudo bem. Agora eu posso salvá-los. OK. Depois de salvar isso, você verá indefinido sendo impresso Agora, essa função aceita dois parâmetros, mas estamos passando apenas um, certo? Então, precisamos passar o segundo parâmetro também. Então eu posso dizer 22 aqui. Isso pode ser como 21, e você pode passar de qualquer idade por aqui. Isso pode ser 29, algo assim. Se você salvar isso, você verá, Olá Alice, você tem 22 anos de idade Agora você está trancado. Olá, John, você tem 21 anos. Agora você está trancado. Olá, Lucy, você tem 29 anos e agora está presa Então, o que isso nos diz que a função pode ter vários parâmetros para definir uma função. Está bem? Assim, você pode definir uma função com vários parâmetros e, se tiver uma função com vários parâmetros, precisará passar vários argumentos para também precisará passar vários argumentos para que ela possa inicializá-la muito bem Tudo bem. Agora, uma coisa aqui que eu quero anotar, quero que todos vocês anotem é essa parte do parâmetro, o primeiro parâmetro aqui, nome é uma string e isso é um número. Está bem? Agora, no final, o que eu posso fazer é adicionar um tipo aqui, tipo de e eu posso simplesmente dizer idade aqui. OK. E eu também posso fazer o mesmo com o nome. Tudo bem. Então, vamos fazer o nome, digitar e eu salvarei o nome. E uma vez que eu o salve, você verá, Hello Alice String, você tem 22 anos Está bem? Então, um parâmetro de função aqui é um número e o outro é uma string. Tudo bem. Agora, e se eu mudar isso para string? Deixe-me salvar isso. Opa. Então deixe-me salvar isso. Agora você verá Lousy. Olá, Lucy. Então Lucy é uma corda, e uma garota de 29 anos também é uma OK. Mas quanto ao resto, o primeiro parâmetro é uma string e o segundo parâmetro é um número aqui. Está bem? Então, o que estou fazendo é obter o tipo de cada uma sendo alterada para cada chamada de função aqui. Tudo bem, você pode ver aqui, e isso é possível porque o Ja Script é digitado dinamicamente Portanto, você não precisa ter um tipo de dados declarado ou definido ao criar variáveis. E esses parâmetros são essencialmente variáveis, certo? Essas são variáveis que só existem dentro do bloco de funções. Então esse é um bloco de funções aqui, ok? Essas chaves curvas que você está vendo são duas chaves CRY, isso é o que é um bloco de funções, e esse nome e idade só existem dentro Então, se você tentar usar o nome aqui, ok? Desculpe, não é isso. Então, eu posso dizer log de pontos do console e deixar eu dizer o nome aqui. Se eu tentar fazer isso, não verei nenhuma saída. Mesmo para H, não verei nenhuma saída. Você pode ver tudo bem? Então, nome e idade só existem dentro do bloco de funções e não fora dele, certo? E essas duas são variáveis que são parâmetros para essa função, ok? E você pode alterar dinamicamente o tipo dos parâmetros é o que você pode ver aqui, certo? Então, sim, isso é digitado de forma totalmente dinâmica. Agora, outra coisa que eu quero destacar aqui é a ordem. Se os parâmetros e os argumentos importam. Está bem? Então, por exemplo, se eu mudar essa idade aqui e se eu mudar o nome aqui. Está bem? Então, idade que eu fiz primeiro. Se eu salvar isso, você verá, olá, número 22, você tem anos de idade, o que é absolutamente errado, certo? Porque trocamos, trocamos o pedido aqui, certo? Então, se eu fizer o lado de controle aqui, você pode ver que está tudo correto agora. Está bem? E também, isso deve ser aprovado na ordem. Ok, então ele é inicializado em ordem. Portanto, esse primeiro parâmetro será inicializado com Ale, 22 serão inicializados com Portanto, a ordem é muito importante. Está bem? Então, se você tem dez parâmetros, você pode ter como número você pode ter vários parâmetros. Aqui estou apenas dando um exemplo de um e dois, mas você pode ter três, quatro, cinco, dez parâmetros. Está tudo bem, certo? Mas se você tiver tantos parâmetros, certifique-se de que está passando os valores em ordem e não está bagunçando a ordem porque a saída que você obterá ficará totalmente confusa Então, espero que até agora esteja tudo bem. Tudo bem. Então, agora eu quero falar sobre parâmetros padrão e, para isso, o que vou fazer é simplesmente duplicar essa função Vou apenas copiar e colar, ok? E você pode ver, vou renomear essa função, ok? Vou cumprimentar a pessoa aqui, e vou ter apenas um parâmetro aqui apenas para fins de demonstração Tudo bem, vou me livrar de todas as outras declarações aqui Vamos manter as coisas simples. Tudo bem? Então essa é minha função, que é a função de saudação Desculpe, cumprimente pessoa, se chama , certo, não é uma ótima função Então, outra coisa aqui que você pode notar é um único programa de script de mandíbula pode ter várias funções definidas para diferentes propósitos, é claro, certo? Então, aqui estou criando outro tipo de saudação, certo. Agora, deixe-me chamar isso aqui. Está bem? Se eu salvar isso, você não verá nenhum erro. Está bem? Agora, deixe-me chamar essa pessoa de saudação, e eu chamei essa função Está bem? Agora, no momento em que você chama essa função sem nenhum argumento você vê que está vendo hello undefined Por que você está vendo hello undefined? Como esse nome ainda não está definido, ele não tem nenhum valor porque você não passou o argumento, certo? Agora, haverá cenários em que você desejará definir algum tipo de valor ou parâmetro padrão, porque a coleira ou quem está chamando a função pode nem sempre transmitir os valores parâmetro padrão, porque a coleira ou quem está chamando a função pode nem sempre transmitir os E nesse caso, talvez você queira ter um conjunto de valores padrão com os quais o parâmetro seja inicializado Agora, uma maneira é ter um valor padrão aqui, ok? Mas isso não é bom. Tudo bem. Eu posso ter um valor padrão, como convidado aqui. OK. E eu posso salvar esse olá convidado. Mas essa não é uma boa maneira de fazer as coisas. Se eu realmente passar um valor, esse valor será substituído E se eu não quiser que isso seja anulado, preciso adicionar verificações desnecessárias aqui Está bem? Mas o script Ja fornece uma maneira simples de fazer isso. Tudo bem. O que você pode fazer é ao declarar o parâmetro aqui, inicializar o parâmetro com um valor padrão, assim Ok, algo assim. Se você salvá-lo, você verá hello guest sendo impresso aqui. Tudo bem. Agora, se você não está passando nenhum parâmetro, você está vendo essa saída. Se você passar algum tipo de parâmetro. Então, se eu disser olá Ron, tudo bem, se eu salvar isso, você verá Olá Ron sendo impresso. Está bem? Então, se você estiver passando qualquer tipo de parâmetro, verá que esse parâmetro é, desculpe, se você estiver passando qualquer tipo de argumento, não parâmetro, se estiver passando algum tipo de argumento, você verá esse argumento sendo usado. Mas se você não estiver passando nenhum tipo de argumento , o valor padrão será usado, desde que você tenha definido um valor padrão aqui, ok? Portanto, este é um exemplo de função com parâmetro padrão. Valor, certo? Então é por isso que isso é muito útil, pessoas. Haverá cenários. Tipo, por exemplo, essa é uma pessoa que cumprimenta, certo? Então, se você não tem o nome do usuário aqui, ok? Podemos ter o nome sendo inicializado para o convidado aqui, certo? E então o que pode acontecer é que o convidado esteja sendo usado. Se o nome não estiver disponível, convide, se você não quiser usar guest , será necessário inserir o nome, nome real do usuário. Está bem? Portanto, independentemente disso, o usuário verá uma saída decente Ele não verá olá indefinido. Certo. Então, será uma produção decente, certo? Agora, essa é uma função com valor de parâmetro padrão. Tudo bem. Eu quero falar sobre a função com o parâmetro rest. Está bem? Então, funcione com o parâmetro rest. Tudo bem. Agora, o que significa uma função com o parâmetro de repouso? Tudo bem. Então, digamos que eu tenha uma função chamada calcular soma. Tudo bem, digamos. E aqui, no lugar do parâmetro, eu tenho dois parâmetros A P, certo. E o que essa função faz é dizer log de pontos do console. Só vai fazer A mais B aqui. Tudo bem. Agora, o problema é que eu gostaria de chamar essa função, certo? Então, o que vou fazer é calcular a soma. Vou passar em 1020. Muito simples. Portanto, ele imprimirá 30 como saída conforme o esperado, certo? Agora, o cenário ou a declaração do problema é que isso funcionará bem ou funcionará se você souber quantos argumentos vai passar, certo? Agora, se você não tem certeza do número de argumentos que vai passar para a função, nesse caso, você pode usar o número variável de argumentos, certo? Então você precisa mudar a sintaxe aqui para isso, e você precisa adicionar três pontos assim, e você pode dizer números, certo? Agora, o que isso diz é que números são o nome do parâmetro. OK. Mas é de número variável, certo? A contagem não é fixa. Tudo bem. Agora a questão é: como você vai usar isso dentro da função se a contagem não for fixa? Tudo bem. Então, para isso, teremos que usar quatro loops. Ok, então eu vou dizer que a soma seja igual a zero. E eu vou dizer quatro. Então, se você está vindo de alguma outra linguagem de programação, tudo bem, como Java, C plus ou qualquer tipo de linguagem de programação, então é provável que você deva estar ciente do que são loops, certo? Se você não está ciente, então está tudo bem. Apenas fique comigo. Vamos cobrir tudo à medida que avançamos. Tudo bem. Mas, por enquanto, estou adicionando esse loop de quatro, e vou dizer soma mais igual a, e vou dizer aqui. OK. E então, no final, eu posso fazer o log do console aqui. OK. E eu posso dizer algumas coisas bem. Algo assim, certo? Agora, aqui, eu passei em 1020, o que me dá 30 como resultado Ok, eu posso passar em 1020 e depois em 30. Eu darei 60 como resultado. Eu posso copiar isso de novo, e posso passar em dez, 20, 30 e posso passar em 80. Você pode ver que está dando 140 como resultado, certo. Então isso vai continuar, certo, porque o número de parâmetros que essa função aceita é variável por causa dessa sintaxe, certo? Assim, você pode passar quantos argumentos quiser. Dependendo da sua necessidade, certo? Então, isso é algo que você deve estar ciente. Isso é conhecido como parâmetro rest. Você pode ver aqui, este é o parâmetro de descanso. Tudo bem. Então, sim, isso está feito. Além disso, um exemplo que eu gostaria de mostrar é o de um booleano, certo? Então você pode até mesmo passar parâmetros booleanos, e como você pode usar parâmetros booleanos, ok Agora, digamos, se eu quiser verificar se um membro tem direito a um desconto ou não, certo? E um usuário tem direito a um desconto se for membro. Está bem? Então, posso dizer que funcione aqui, verifique a elegibilidade aqui OK. O parâmetro é, digamos , posso dizer que posso dizer que é membro aqui. OK. Vou manter as coisas simples e vou dizer que o log de pontos do console está aqui. E dentro disso, farei uma verificação ternária do operador. Está bem? Então eu vou dizer, é membro. Se for membro, nesse caso, nesse caso, elegíveis imprimirão o que será impresso? Não elegível. Algo parecido com isso. OK. E sim. Ok, então eu cometi um erro na sintaxe. Seria algo assim, e aqui, seria Colin OK. Então, sim, isso está feito. OK. Então, o que você está fazendo é aqui, deixe-me pegar essas duas novas linhas para que fique muito mais legível, você pode ver, o que eu fiz Na verdade, estou verificando a elegibilidade para desconto com a ajuda dessa variável booleana Então, se ele é um membro, ele é elegível, caso contrário, ele não é. OK. E, muito simplesmente, você pode chamar isso. É um cheque de elegibilidade, você pode dizer, é verdade. OK. Assim, você pode ver que ele é elegível e, se você alterar isso para falso, ele não é elegível. Tudo bem. Então é isso que você vê como saída. Tudo bem. Agora, essas eram funções baseadas em variáveis. Tudo bem. Você pode até mesmo ter funções com objeto. Está bem? Então funciona com objetos como parâmetro. Tudo bem. Então, nesse caso, vou criar uma função aqui. E digamos que desejamos imprimir o endereço. Ok, então o endereço pode ser complicado, certo? E nesse caso, digamos que somos, digamos que desejamos ter uma rua por aqui, eu terei a cidade e terei o SEP. Ok, essas coisas eu vou ter. OK. E eu vou dizer que o log de pontos do console está aqui. E com os cravos, vou dizer endereço. OK. E então eu vou imprimir o endereço. Desculpe, isso será rua, então isso será depois da rua. Há cidade e CEP. Ok, então eu vou dizer cidade. E então isso será ZIP. Tudo bem. Então eu tenho essa função, ok, que é ter três parâmetros ou ter um único objeto com essas três propriedades aqui. OK. Agora, como você esfriaria isso aqui? OK. Então, para coletar isso, posso ligar simplesmente para imprimir o endereço, ok? E eu posso ter deixado o endereço aqui. E eu posso dizer rua rua como rua um, ok, algo assim. Você pode ter qualquer tipo de endereço fictício. Eu posso ter um citadino. Ok, estou adicionando todos os endereços fictícios. Você pode dizer ZIP e você pode dizer aqui, algo assim. OK. Então, sim, isso é o que está aqui. E eu vou fechar, vou ter um ponto e vírgula, e então vou passar o endereço a. Agora, se você ver a saída, você pode ver o endereço Rua um, cidade um, e você pode ver isso sendo impresso aqui Então, na verdade, estou obtendo a saída em várias linhas porque adicionei a separação de linhas. Então, vou voltar e mover tudo para uma única linha, e você pode ver a saída agora, certo? Então é assim que você pode fazer com que os objetos sejam passados. Tudo bem. Você pode até ter um endereço impresso aqui. Essa também é outra sintaxe, e você pode criar diretamente o objeto aqui Então você pode dizer rua Colin ABC. OK. Dessa forma, você também pode entrar. Certo. Você pode ver que a rua está sendo ultrapassada agora e as outras duas estão indefinidas, certo? Portanto, é importante que a chave seja adequada para todos os pares de valores-chave. Tudo bem. Então aqui você pode dizer cidade dois, dois, salvar. Você pode ver a saída, sim. OK. Assim, você pode passar ou criar objetos dinamicamente como este também aqui. Tudo bem. E também, mais uma coisa que eu gostaria de destacar aqui são as matrizes, ok? Portanto, as funções também podem ser usadas com matrizes como parâmetros. Tudo bem. Agora, neste caso, o que faremos é ter uma função. Eu direi números impressos e terei números como parâmetro aqui, e posso dizer log de pontos do console, e posso dizer números, algo assim. Tudo bem. E eu posso chamar essa função. Então, deixe-me chamar isso. Vou dizer números impressos e deixe-me ligar para isso. Eu posso dizer um, dois, três, quatro, cinco, seis. Tudo bem? Se eu salvar isso, você verá a matriz sendo passada para a função. Portanto, este também é um exemplo de função com matriz. Tudo bem. Então, isso é tudo que eu tinha para falar sobre diferentes parâmetros. Quero dizer, os parâmetros da função e os argumentos da função. Tudo bem. Espero que esse conceito esteja claro. A distinção entre parâmetros e argumentos também está clara, e espero que você tenha alguma clareza sobre como criar funções que aceitem argumentos diferentes e possa usá-las em JavaScript. Tudo bem? Então, espero que isso tenha sido útil. 4. Resultados de função revelados: explicação dos valores de retorno: Agora, digamos que eu tenha uma função que pode me ajudar a obter um valor quadrado, ok? Agora, SQUA está bem. E para isso, vou aceitar um número aqui. Tudo bem. E o que é um quadrado? Um quadrado está em número multiplicado por si mesmo. Então eu vou dizer deixe o resultado, e eu vou dizer número em número. OK. Agora isso está feito. Eu posso fazer um log do console aqui. Ok, registro de pontos do console, posso dizer resultado. Tudo bem. Agora vou chamar essa função. Eu vou dizer, pegue o quadrado, e eu vou ligar para quatro. Agora, o que é um quadrado de quatro? É 16. Então você verá 16 como saída. Tudo bem. Agora, o que está acontecendo aqui é que estamos passando esse argumento quatro para esse parâmetro para essa função, e esse parâmetro é inicializado com quatro, e então o cálculo acontece onde o resultado é inicializado com quatro em quatro, que é 16, e então você obtém 16 como resultado, certo Agora, esse 16 ou o resultado não estão acessíveis fora dessa função, certo? Agora, haverá cenários em que você pode querer fazer certo tipo de processamento, tudo bem, certo tipo de operação, certo tipo de operação, que você está processando alguns dados, algumas informações e, em seguida, deseja obter esse valor processado aqui, não estamos recuperando o valor processado de onde ligamos, certo? Então, aqui estamos pedindo que a função obtenha o quadrado de quatro. Mas e se eu quiser usar o quadrado aqui? Eu não posso. Não consigo acessar o resultado aqui. Está bem? Então, se eu simplesmente mover essa declaração daqui para aqui, ela não funcionará, certo? Você pode ver que o resultado não está definido. E a razão é que o resultado é criado dentro desse bloco de funções, então ele existe lá mesmo, certo? Você não pode acessá-lo fora do bloco de funções. Então, como faço para obter os dados do processo? Da função. Agora, é aqui que você pode retornar os valores, certo? Então, aqui, o que estou fazendo é em vez de imprimi-lo aqui, posso simplesmente dizer devolver. Eu posso usar essa palavra-chave de retorno aqui. Você pode ver esse retorno, e eu posso dizer o resultado. Está bem? Agora, o que acontecerá como resultado disso, o resultado será retornado. Está bem? E de onde ele é retornado de onde quer que você chame a função. Então, de qualquer lugar, seja qual for posição em que você esteja chamando a função, esse resultado é Mas o problema é que você não está vendo isso aqui, certo? Então, para obter o resultado, você precisa pegá-lo e como capturá-lo? Você pode dizer quadrado entorpecido aqui. Você pode criar uma variável e capturá-la dessa forma ou imprimir essa variável. Então, agora você verá 16 como saída. Então, o que estamos fazendo essencialmente aqui é criar uma função g quadrado para processar ou obter o quadrado de um número e ele pode ser qualquer número, e estamos obtendo o resultado aqui e o registrando aqui. Certo? Agora, essa maneira de fazer as coisas é conhecida como retornar o valor de uma função. E aqui, estamos obtendo esse valor e fazendo mais alguns processamentos, certo? Então, sim, é assim que você pode retornar e usar os valores de uma função específica. Agora, o problema aqui é que estamos apenas retornando um valor único. Obviamente, você também pode ter funções que retornam vários valores. Como você faria isso? Então eu posso ter a função Ok, aqui e eu posso dizer obter informações do usuário. Está bem? E eu posso dizer nome, vírgula H. Ok. Eu posso dizer “volte”. Posso dizer nome de usuário, nome Colden aqui. OK. E eu posso dizer usuário H e posso dizer g aqui. OK. Então isso está feito, e tudo bem. Então isso está feito, e em vez de adicionar isso, o que eu posso fazer é me livrar e fazer com que isso seja inicializado dessa forma OK. Então, estou fazendo um teste de nome e terei H como teste. OK. Agora, como faço para colocar esse valor no lugar onde quer que eu esteja chamando isso? Está bem? Então, o que eu posso fazer é ver o log de pontos do console. OK. Eu posso imediatamente posso dizer G. Desculpe, Ah, sim, começa com G, na verdade, G, informações do usuário, e eu posso chamá-lo assim. E você verá as informações do usuário sendo impressas aqui, certo? Em vez de imprimi-lo no console, o que você também pode fazer é desempacotá-lo , certo? Então, aqui, há duas propriedades chegando, nome de usuário e usuário H. Então você pode descompactar isso e atribuí-lo a variáveis separadas Como você faz isso? Então você pode dizer deixe aqui. Você pode dizer use um nome. E você pode dizer que o usuário g está aqui. Está bem? É isso, ok, você está criando aqui e está ligando para obter informações do usuário. Tudo bem. E agora, se você fizer o log de pontos do console aqui, nome de usuário, vírgula, usuário H. Você pode ver que o nome é isso e H é isso. Está bem? Agora, o que estamos fazendo é quando estamos obtendo o valor. Portanto, quando o valor é retornado de get user info, ele é retornado na forma de objeto. Então isso é na verdade um objeto aqui, pares de valores-chave, certo? E é assim que você pode retornar vários valores de uma função. E estamos recebendo um objeto como tipo de retorno. Então, o que estamos fazendo é imprimi-lo no console. Ok, não queremos imprimi-lo. Queremos lidar com isso de forma personalizada. Então, o que você pode fazer é descompactar esses valores e atribuí-los a variáveis separadas usando a sintaxe Está bem? Então você tem a lista de variáveis aqui e certifique-se de que elas correspondam ao nome aqui, porque se eu disser o nome de usuário um, e se eu salvá-lo, você verá que nome do usuário não está correto, aqui. Vou adorar o nome de usuário um e vou salvá-lo. Você verá que o nome de usuário um está indefinido agora. Por quê? Porque o nome da propriedade é nome de usuário, e aqui você a está descompactando em uma variável com um nome diferente Está bem? Então, o nome está sendo combinado, você pode ver, certo? Então isso deve funcionar. E essa sintaxe em que estamos criando variáveis dessa forma a partir do objeto é conhecida como desestruturação Está bem? E você frequentemente lerá esse termo desestruturação de objetos Estamos desestruturando os objetos. O que é desestruturação? Em termos simples, estamos desempacotando os objetos, ok? O objeto vem nessa sintaxe, certo? Tem o atributo nome de usuário e o usuário H. Você está descompactando e criando uma variável chamada nome de usuário, você está atribuindo esse valor a ela, certo Esse valor, sim. E então você está criando usuário He e atribuindo a ele esse valor Bem simples. Estamos desempacotando isso, e é isso que é a desestruturação de objetos E aqui, na verdade, em retrospectiva, não em retrospectiva, na verdade, está bem claro que essa sinta específica ou esse conceito específico está sendo usado aqui para desestruturar os objetos Tudo bem. Então é assim que você pode fazer com que função retorne vários valores, como objetos, é claro. Está bem? Agora, é assim que você pode retornar um objeto, certo. E eu também mostrei como você pode fazer uso do objeto do lugar onde você está chamando isso. Agora, outra maneira de fazer as coisas ou retornar vários valores é ter uma função, uma matriz de retorno, certo? Então você também pode fazer isso. Agora, como você faria isso? Então deixe-me mostrar isso para você. Então você pode ver a função e dizer obter dimensão aqui. OK. Não vou aceitar um parâmetro. Então, digamos que estamos criando uma função para obter a dimensão. Vou dizer, volte, e podemos imediatamente ter uma matriz aqui Posso dizer 200, 300, 500. OK. E eu posso simplesmente chamar Console dot log get dimension aqui. OK. E você pode ver a saída aqui. Ok, então isso também é factível, ok? Agora, você pode até mesmo desestruturar a matriz aqui em variáveis individuais Está bem? Como você faria isso? Está bem? A propósito, já sabemos como funciona a desestruturação Então eu vou dizer, aqui estou retornando 200300500, certo? Então eu posso dizer largura OK. Eu posso dizer altura, eu posso dizer profundidade aqui. OK. Vou me livrar disso e vou pegar isso. Eu direi que é igual a obter dimensões. OK. E eu posso dizer Console, dot, logon aqui. Eu vou dizer largura, altura e profundidade, algo assim. OK. Opa. Então, isso é indefinido Deixe-me ver onde está o problema. Portanto, a sintaxe é um pouco diferente aqui. Em vez de colchetes encaracolados, haverá colchetes redondos Está bem? Oh, desculpe, não são colchetes redondos. Me desculpe por isso. OK. Então, se você salvar isso, você pode ver 200300500 Isso funcionou, certo? Então, isso é sobre aumentar aqui. Está bem? Uma coisa sobre a qual eu quero que você fale está aqui nesta função. Está bem? Deixe-me copiar isso aqui. OK. Vou comentar isso. Não estou removendo esse código para que você possa ver quais mudanças estamos fazendo. Então esse é o código, ok? Aqui, o que estou fazendo é, na verdade, criar uma variável. Não precisamos criar essa variável aqui. Eu posso simplesmente cortar isso e retornar o cálculo, algo assim. Isso também é bom. Há outra maneira de fazer as coisas. Você pode ver 16. A forma abreviada é como se chama, Então, sim, é assim que você pode retornar a função. Desculpe. É assim que você pode retornar valores e diferentes tipos de valores, na verdade, da função. Agora você também pode ter uma função sem retorno aqui. Está bem? Então eu posso ter uma função chamada say hello. Isso é algo que você já sabe ou já deve estar ciente, e você pode dizer: eu quero te mostrar como as coisas funcionam se você tentar aceitar o valor de uma função que não está retornando nada. Está bem? Então eu tenho que dizer olá. Isso não está devolvendo nada. Está bem? Eu posso dizer olá aqui. OK. Você verá o olá impresso. Está bem? Agora, se eu disser ponto de console , entre aqui e se eu disser mensagem Ok. E se eu tentar aceitar a mensagem como o retorno dessa função específica. Esta função não está retornando nada, mas ainda estou criando uma mensagem e tentando aceitar o que ela está retornando, você ficará indefinido Não está devolvendo nada, certo? Então, é claro, você ficará indefinido, certo? Então, sim, isso é tudo, certo. Você também pode , então eu quero te mostrar mais um caso aqui. Então, aqui estou retornando número em número, ok? Agora, deixe-me adicionar uma roupa depois disso, ok? Vou dizer oi. Vamos ver o que acontece. Se eu salvar isso, você verá que essa instrução nunca é executada. Você também verá que é uma nota baixa. Consegue ver isso? Isso não é nota baixa, é saída de nota. Se você passar o mouse sobre isso, verá um código inacessível detectado O que significa código inacessível ? Está bem? Então, o que acontece é que, na verdade, se você tiver qualquer tipo de declaração após a declaração de retorno, repito, se você tiver algum tipo de declaração após a declaração de retorno , essa instrução nunca será executada, certo? Como isso será executado? Porque você está realmente voltando daqui. Você disse “volte”. Retornar significa que você está vindo para o lugar de onde você é chamado de função, certo? Você está vindo para o lugar de onde você chama a função. Então, isso nunca será executado. Então, é claro, esse é um código inacessível, certo? Isso nunca será executado, certo? Agora, deixe-me tornar as coisas um pouco interessantes, certo? Então você pode ter uma função. Com vários valores de retorno ou declarações de retorno. Não valores. Devo dizer declarações de retorno porque valores já vimos como você pode retornar vários valores na forma de objetos e matrizes, certo? Então, digamos que eu tenha uma função na qual eu queira verificar cada usuário Estou verificando a idade e estou aceitando a idade aqui. OK. Agora eu posso dizer idade se a idade for maior que 18, ok? Então eu estou fazendo uso do operador ternário. Estou dizendo que está bem, volte como adulto. Algo parecido com isso. Então , é voltar a ser adulto se a idade for realmente acima de 18 anos, ok? E opa, isso não está nos permitindo voltar aqui, operador ternário Vou ter que fazer uso do tratamento por aqui. Ok, então eu vou dizer que a idade é maior que 18, então, nesse caso, ok? Eu vou querer voltar como adulto, certo? Estou voltando como adulto. Está bem? Caso contrário, o que vou devolver é pequeno. Digamos que. OK. Então, sim, isso está feito, e eu vou ter ponto e vírgula OK. Então aqui o que está acontecendo é observar isso com cuidado, pessoal, ok? Estou tendo uma função em que tenho duas declarações de retorno, retorno adulto, retorno menor, ok? Então, isso é absolutamente válido, ok, porque essas duas instruções de retorno não são executadas ao mesmo tempo. Qualquer um deles será executado dependendo da condição, certo? Portanto, se a condição for verdadeira, ela será executada. Se a condição for falsa, isso será executado, certo? E é assim que a declaração if funciona. Então, primeiro verificamos essa condição e depois executamos isso, certo? Assim, você pode ter várias declarações de devolução. Está tudo bem por aqui. Tudo bem. E se eu tentar executar isso aqui, posso dizer log de pontos do console aqui. Ok, e eu posso dizer, cheque, idade, deixe-me passar de 14 por aqui. Ok, vou copiar isso e vou salvar isso. Você verá minor como saída. Se eu fizer isso de novo com 24 anos, você verá um adulto. Tudo bem. Então, aqui estamos fazendo uso de declarações return with if, e isso é absolutamente válido. Não há problema como tal, certo? Então, espero que isso esteja fazendo sentido agora sobre como a função pode retornar valores em vários e diferentes cenários. Tudo bem. Então, espero que isso seja útil. 5. Como criar código: explorando expressões de função em JavaScript: Então, agora é hora de falarmos sobre expressões de função. Digamos que eu tenha uma função muito simples, que é usada para dizer olá, certo? E eu posso chamá-lo assim. Não há nada mágico por aqui. Veremos a saída como hello. Está bem? Agora, outra coisa que quero destacar aqui está na parte superior, se você adicionar uma chamada de função como essa, verá a saída antes mesmo de a função ser declarada. Portanto, mesmo antes da declaração da função, se você tentar adicionar say hello ou chamar a função que você vai declarar , ela ainda funcionará Você não receberá nenhum erro. Tudo bem? Agora, voltando ao tópico de expressões funcionais, o que são expressões funcionais? Então você pode criar uma variável, como essa. Você pode dizer vamos criar aqui. E você pode atribuir uma função a ele, certo? Então isso é algo que você pode fazer. Tudo bem Então, o que vou fazer é cortar isso. Não vou criar uma nova função. Em vez disso, vou cortar isso e adicionar aquela coisa aqui, ok? E a, isso é absolutamente válido aqui. Está bem? Isso é algo que você pode fazer em JavaScript. Está bem? Você pode chamar Greet de algo assim, e você pode ver: Ok, C, olá Ok. Então, isso precisa sumir por aqui. O nome C hello precisa desaparecer, certo? E quando o S hello acabar, você precisa curtir e comentar isso. Ok. E você pode ver, agora você pode chamar essa função específica usando greet. Está bem? Então, o que estamos fazendo aqui é, na verdade ter um tipo de variável que agora está apontando para essa definição de função. E quando você está se referindo a essa variável, você pode chamar a função usando essa variável em si. Está bem? Então, esse é um exemplo de uma expressão de função. Agora, a forma como tudo isso funciona é que o que acontece é que a primeira função anônima é criada. Está bem? Função anônima, ou seja uma função sem nome está sendo criada, porque não estamos adicionando um nome aqui, ok? Então, uma função sem nome é criada e atribuída a essa variável chamada Grit, ok? E então você pode usar a ganância para chamar a função. Agora, se eu copiar essa chamada de função e adicioná-la na parte superior, você verá que o grit ainda não foi inicializado ou o grit não existe Tudo bem Portanto, ao contrário de say hello, em que pudemos chamar a função com o nome da função, não podemos chamar a função com greet porque grit é essencialmente uma referência que criamos que aponta para essa Está bem? Então, isso é algo que você precisa estar ciente, ok? Você não pode chamar grit antes de sua definição no código. Você deve defini-lo antes de usá-lo. Tudo bem? Então, sim, isso é sobre a expressão da função. Agora, essa coisa aqui, o que estamos fazendo quando atribuímos a função dessa forma, estamos na verdade criando uma expressão Está bem? Então, esse é um exemplo de expressão de função. Você pode até adicionar uma função, certo, que retorna alguma coisa. Está bem? Então, deixe-me dizer também: vamos multiplicar Ok. Digamos que queremos ter uma função para multiplicar algo Vou adicionar uma função aqui. O parâmetro é E P aqui, e eu direi que retorne A para B, porque essa função está multiplicando os dois números e retornando. Está bem? Agora você pode dizer multiplicar aqui, dez, 20. Ok. E se eu salvar isso. Ok, então está simplesmente voltando. Precisamos imprimir o valor se quisermos usá-lo ou exibi-lo para os usuários. Ainda não dando a saída por causa dessa linha na parte superior, estamos recebendo um erro aí. Então, se você salvar isso depois de comentar isso, obterá o multiplicador aqui, você pode ver, e você pode ver o resultado da multiplicação Está bem? Então, isso também é possível quando você tem uma função que está retornando algo e você está retornando algo e você está atribuindo essa função a Portanto, essa é uma função anônima ou sem nome que você está atribuindo a uma variável Tudo bem Agora, mais uma coisa que eu quero destacar aqui é que as funções em JavaScript são objetos. Está bem? Então eles são objetos, o que significa que, se você tem uma função, ok, então deixe-me criar uma função aqui. Está bem? Então, aqui, eu vou dizer que as funções são objs Tudo bem E eu vou ter uma definição de função. Vou chamar isso de GET. Ok. Sem parâmetros. Vou dizer log de pontos do console e vou dizer olá rapidamente por aqui. Está bem? Então, sim, isso é uma função. Agora, o que você pode fazer é ter essa função. Está bem? Ok, GET já foi definido, então diga oi ou diga olá. Tudo bem Então, se você ligar para dizer olá, vai funcionar, é claro, nada mágico, certo? Agora, olá novamente. Vou imprimir alguma coisa. Olá de novo, jeito. Para que saibamos que está vindo dessa função. Hello again vem desta função. Tudo bem O que você pode fazer é ter uma variável. Você pode dizer A aqui, e você pode atribuir diga olá aqui. Está bem? Então, o que está acontecendo aqui é essa função ou essa variável, devo dizer. Tudo bem Essa variável também está se referindo a essa função agora, certo? E você pode simplesmente dizer, A, e você verá olá novamente. Tudo bem Assim, você pode ver que está atribuindo uma função essencialmente a uma variável E isso é possível porque as funções são objetos em JavaScript. Ok. E você pode usar A para chamar essa função específica. Tudo bem Espero que isso esteja fazendo sentido, certo? Então, esses são alguns conceitos que eu gostaria de abordar. Espero que isso tenha sido útil. 6. Fundamentos modernos do Javascript: dominando as funções de seta: Então, agora é hora de falarmos sobre as funções das setas. Agora, o que são funções de seta? Agora, as funções de seta são sintaxe, e a sintaxe fornece uma maneira mais concisa de criar e escrever funções Tudo bem? Agora, se você tivesse que criar uma função, o que você faria? Você diria função, diria olá, e eu diria olá aqui. Está bem? Então eu diria Console , log e eu diria olá. Está bem? Isso é uma função. E, claro, se eu tiver que ligar, vou simplesmente chamá-lo assim, dizer olá. Essa é uma forma básica de criar funções em JavaScript. Agora, você pode usar a expressão da função, certo? E você pode dizer, et greet é igual a, e você pode se livrar desse tipo de sintaxe aqui Está bem? Ou deixe-me realmente manter essa sintaxe aqui no topo Ok, para vermos como estamos progredindo e eu vou me livrar disso aqui Tudo bem. E essa também é outra forma de criar funções. Mas aqui estamos fazendo uso da expressão de função em que atribuímos uma função a uma variável. Está bem? Então, agora essa variável está apontando para essa função específica. Agora, em JavaScript, você pode melhorar ou tornar isso ainda mais conciso. Tudo bem. Então, o que você pode fazer é dizer aqui, cret, eu vou dizer greet arrow. Vamos ver o que é a função de seta. Portanto, você pode pular essa palavra-chave de função aqui primeiro Tudo bem, então você pode se livrar dessa palavra-chave de função. E como nossa função tem apenas uma única declaração, posso simplesmente me livrar das frases e posso simplesmente dizer, ou posso simplesmente fazer algo assim. Tudo bem. Então, eu estou usando a seta aqui para definir o corpo da função ou a definição da função. Agora eu posso dizer a seta de saudação aqui. E eu posso salvar isso e você verá olá sendo impresso no console. Tudo bem. Então, essa sintaxe aqui é uma sintaxe da função de seta E você pode ver que isso é uma criação de função de uma forma normal, tudo bem, com apenas a sintaxe normal Essa é uma expressão de função em que você está atribuindo uma função a uma variável E aqui, agora o que você está fazendo é tornar essa expressão de sintaxe ou função ainda mais concisa e usar a seta aqui Então, essas são as funções de seta, à direita, nas quais você pode criar funções dessa maneira Agora, é claro, isso é muito mais conciso, se você está apenas criando uma função para fazer uma linha de operação, por exemplo, qualquer linha de operação, como imprimir algo ou registrar algo ou processar algo em apenas uma linha, dessa forma , dessa forma , a função de seta é muito mais concisa do que fazer as coisas dessa maneira ou dessa maneira, certo se você está apenas criando uma função para fazer uma linha de operação, por exemplo, qualquer linha de operação, como imprimir algo ou registrar algo ou processar algo em apenas uma linha, dessa forma , a função de seta é muito mais concisa do que fazer as coisas dessa maneira ou dessa maneira, certo? É só uma opção. Tudo bem. E você verá muitos códigos que usam funções de seta. Tudo bem? Agora, a questão está aqui, essa função é uma linha, certo? Então, é como se a função de seta fosse usada apenas para uma única linha de declaração? Absolutamente não. Então, se o corpo da função tiver várias declarações. Então, aqui eu posso dizer criar uma seta, múltipla, certo? E eu posso dizer aqui, ok? Então, aqui, vou adicionar um corpo, algo assim, e posso dizer, aqui, vou copiar isso e vou colocar esse olá. H dois. Está bem? Então isso é olá um, e isso é como dois. Tudo bem. E eu só preciso chamar isso para que eu possa dizer criar setas múltiplas e, uh, simplesmente adicionar para que você possa ver olá um, olá dois. Assim, você também pode ter várias linhas de código nas funções de seta. Tudo bem. Agora, vamos criar e ver rapidamente diferentes funções de seta em diferentes cenários, certo? Então, como a função de seta se comportaria se houvesse parâmetros, certo? Então, vimos que é assim que você pode criar sem parâmetros, certo? Então, com os parâmetros, você simplesmente adicionará um parâmetro aqui, tudo bem Então, por exemplo, aqui mesmo, eu posso atualizar esse exemplo aqui. OK. Deixe-me duplicar isso aqui. OK. Agora, aqui, eu posso dizer o parâmetro um. OK. Então, está tendo um parâmetro, então eu posso dizer o nome aqui, certo. E vou simplesmente converter isso em um modelo literal. Ok, porque isso é mais conveniente, e eu posso dizer mais alto e nomear aqui, E agora eu preciso passar o nome aqui. OK. Então eu vou dizer a seta de Creta, e eu vou dizer o parâmetro um OK. E eu posso dizer John. OK. E se eu salvar isso, você verá, olá, um, John, certo? Então é assim que você pode passar os parâmetros, tudo bem. Você pode até mesmo passar vários parâmetros, se desejar. Então eu posso dizer o parâmetro dois. Então, aqui estamos passando dois parâmetros, então eu também posso dizer H aqui, tudo bem E aqui, eu posso simplesmente replicar essa sintaxe, ok? Aqui. Vou fazer uso de modelos literais, e aqui, vou dizer H. Ok. E aqui, vou copiar isso. Então, vamos dizer o parâmetro dois, e eu estou passando John, bem como 34 ou 32. Vou guardar isso e você pode ver olá um, John, olá dois, 32, certo? Então você está passando vários parâmetros e também tem um corpo de função, certo? Você também pode comprar este. Está bem? Então, deixe-me entender isso com uma única declaração aqui. Ok, pegue a flecha, eu vou dizer uma, vou passar o nome aqui. OK. E eu posso adicionar um nome aqui. Algo parecido com isso. Está bem? Agora, se eu chamar essa função, pegue R one ou cumprimente R one, ok Então, ótimo R one e eu não posso deixar passar nada, ok? E se você salvar isso, você pode ver olá Nadar, certo? Então, aqui, esta é uma função de linha única, na verdade. Não está acontecendo como várias linhas. Essa função tem apenas uma linha, e você pode até mesmo passar um parâmetro aqui, certo? Assim, você pode ter parâmetros únicos, vários parâmetros. Você pode até mesmo retornar valores, certo? Então, deixe-me escrever o exemplo aqui. Está bem? Então, o que eu posso fazer é dizer, vamos somar, e eu diria que é igual a, ok. Então, deixe-me primeiro criar usando a sintaxe normal, para que possamos deduzi-la em funções de seta . OK. Então aqui eu posso dizer s e Opa, eu posso dizer s, e aqui eu posso dizer E P, e isso simplesmente retorna, E mais P. Ok. É isso mesmo. Bem simples. E agora aqui eu posso dizer a soma, certo? Eu posso dizer 1020, certo? E vou colocar tudo isso no registro do console. Está bem? Então, porque estamos simplesmente retornando e não estamos imprimindo nada, certo? Portanto, não será exibido no console. Então você pode ver que estamos vendo 30 aqui, certo? Agora, se eu tiver que converter isso em uma expressão de função, posso dizer let e posso dizer algumas aqui. Está bem? Vou manter o mesmo nome. Vamos nos livrar disso. OK. Agora, isso é uma expressão de função. Você pode ver 30. Agora, se eu tivesse que converter isso em função de seta, como eu faria isso? Então, aqui, eu posso me livrar da função antes de tudo, ok. E então eu vou começar a ver marcas vermelhas aqui, certo? Então você pode ver a seta esperada. Então aqui eu posso ver a seta. Ok, e é isso. Você pode ver que esta é a função de seta. E eu nem preciso disso aqui. Ok, porque é só ter uma única linha de código, então você pode ver como isso é. E você nem precisa da palavra-chave return, aliás, se você está retornando e ela tem apenas uma única linha de código, você pode ver, não é Você sabe, é isso. Vou apenas adicionar espaço. Você sabe, é isso. Então, quão limpo é isso? Você está dizendo, vamos resumir. Este é um parâmetro, seta, você está dizendo A mais B. Não há palavra-chave de retorno, então isso está sendo retornado automaticamente. Entende-se que ele será retornado ou esse valor precisa voltar, certo? Então, quão conciso é isso em comparação com fazer as coisas da maneira antiga, certo? É bem simples, muito fácil e torna a sintaxe muito mais legível e concisa, como você pode imaginar aqui Então, valores de retorno são o que vou escrever aqui. Então, espero que você tenha conseguido acompanhar e espero que a explicação das funções das setas tenha sido útil. 7. Empoderando objetos: aproveitando funções dentro: Então, vamos falar sobre como você pode usar funções dentro de objetos. Agora, digamos que eu tenha esse objeto aqui chamado pessoa, ok? E eu vou ter algumas propriedades por aqui. OK. Então, eu vou dizer Alice aqui. OK. E eu posso dizer que go, g é 33. Ok, eu perdi uma vírgula. Ok, posso dizer que o log de pontos do console está aqui. Opa, e posso dizer que essa é a pessoa que pensou H. Ok. Agora, eu posso adicionar práticas aqui. Posso converter isso em um modelo literal e posso dizer: Olá, eu sou OK. E eu posso realmente adicionar uma expressão aqui. OK. Agora, esse será o nome. Tudo bem, porque o nome é o que faz sentido. E se eu salvar isso, você verá, oi, eu sou Alice. Tudo bem. Então, o que estamos fazendo é nos referir às propriedades dentro dos objetos usando a notação de pontos aqui, certo? Agora, você pode ter funções dentro de objetos. Agora, se você está adicionando funções dentro de objetos, elas são conhecidas como métodos, certo? Então, aqui, posso simplesmente continuar adicionando afirmações aqui, posso dizer minha idade aqui, posso imprimir na minha pessoa etária o ponto H aqui. Está bem? Mas isso está fora do objeto. Então, eu posso adicionar essa coisa dentro do objeto com a ajuda da função, como eu disse, então vou cortar isso aqui. Está bem? E primeiro adicionarei uma vírgula porque os métodos que você está adicionando, como eu disse, funcionam dentro um objeto são conhecidos como método, certo? Então, se você está adicionando um método aqui agora, ok, deve ser separado por vírgula porque é um atributo, direito ou uma propriedade, eu diria Então eu vou dizer Grit aqui. Vou dizer uma função assim, e vou adicioná-la aqui. Está bem? Se eu guardar isso, nada acontece porque eu preciso resfriar isso. Então eu vou dizer Oh, eu não vou ser cumprimentado. Eu diria que a pessoa não cumprimentava. Está bem? Não preciso chamar o log de pontos do console aqui porque já estou fazendo o log de pontos do console dentro desse método aqui, certo? Então eu vou dizer pessoa, Greg, e eu vou ver isso, você vai ver oi, eu sou Alice, certo Vou me livrar disso de uma maneira. Está bem? Então isso é factível. Agora vou chamar esse objeto de pessoa de Alice. Vou substituir a pessoa Alice aqui e também aqui. Isso está funcionando bem. Agora vou adicionar mais uma pessoa aqui, que é a réplica desse objeto aqui, e vou dizer uma pessoa John aqui OK. Vou copiar o nome dele, pessoa, John, pessoa, John, e vou duplicar isso aqui, e vou dizer pessoa John Você pode ver? Oi, eu sou Alice Oi, eu sou John. Tudo bem. Então, isso está funcionando bem até agora, tudo bem. Tudo bem. Agora, a forma como criamos funções aqui é com a ajuda da expressão da função, certo? Assim, você pode se livrar da função aqui, a palavra-chave function, e convertê-la em função de seta. Está bem? Então, o que eu posso fazer aqui é simplesmente me livrar disso e adicionar esse tipo de sintaxe aqui OK. Eu posso me livrar disso e posso usar esse tipo de sintaxe aqui Opa. Esse tipo de sintaxe, certo? Então, isso vai funcionar bem. E se você salvar isso, funcionará bem. Nenhuma alteração na saída. Então, esses métodos foram criados. Tudo bem. Agora também posso me livrar da prensa ondulada e fazer com que pareça ainda mais concisa porque estou usando as funções de seta agora, certo Então, vou passar para essa sintaxe. OK. E no final, removerei o ponto e vírgula. OK. Se eu salvar isso, não haverá alteração na saída. Tudo bem? Agora, eu também quero falar sobre uma palavra-chave que existe, que é essa palavra-chave. Agora, aqui, estou vendo personalis que é esse nome de objeto específico, certo? Mas, na verdade, o que estou fazendo é me referir ao atributo do nome ou à propriedade do nome usando esse nome de objeto. Isso não é obrigatório. O que eu posso fazer é simplesmente usar isso aqui. Essa é uma palavra-chave em JavaScript usada para se referir ao objeto atual, certo? Então, se você passar o mouse sobre isso, tudo bem, você verá esse tipo de teste global de palavra-chave Se eu salvar isso, ok? Tudo bem, isso não funciona porque ambas são convertidas em funções de seta. Tudo bem. Então, uma coisa que você precisa lembrar é que se você estiver usando essa palavra-chave, ela não funcionará em funções de seta então você precisa dizer função , então você precisa dizer função aqui e salvá-la. Ok, e eu preciso me livrar disso. Então, terei que reverter um pouco porque essa palavra-chave não funcionará dentro dessa sintaxe específica aqui OK. Então, vou mudar para esse tipo de sintaxe novamente. OK. Então você pode ver, oi, eu sou Alice trabalhando aqui. Então agora você está fazendo uso disso. Se você passar o mouse sobre isso, verá que isso se refere a nome, g e saudação Se você mudar isso aqui, é claro, não funcionará porque você acabou de ver não funcionará dentro das funções de seta. E se você passar o mouse sobre isso, verá que está se referindo a isso global Está bem? Mas este está se referindo a isso aqui, aos outros atributos do objeto. Tudo bem Assim, você pode ver a saída. A saída não está correta. Está bem? Então, vou ficar com a pessoa John aqui. Então, uma coisa que você pode tirar aqui é se você está fazendo uso disso ou se seu método dentro do objeto envolve fazer uso disso, então você não deve usar a função de seta dentro do objeto aqui, certo? A sintaxe não deve ser usada. Você deve usar esse tipo de sintaxe. Tudo bem Então, espero que isso seja útil. Agora, você pode fazer muita coisa com os métodos dentro dos objetos, ok? Então, se você vier aqui, o que eu farei é ter um contra-exemplo aqui. OK. Agora, o que o contador vai fazer? Ele vai te ensinar como você pode passar os parâmetros e como você pode retorná-los do objeto, certo? Então, vou dizer const, ou posso simplesmente dizer let over here, counter OK. E eu vou dizer valor. Portanto, esse contador tem valor inicial de zero. OK. E eu posso dizer incremento aqui. Então, essa é uma função que eu estou criando, função de incremento, e vou dizer valor de retorno Agora, o valor precisa ser incrementado. Assim, você pode ver que esse valor de ponto foi adicionado e pode incrementar o valor aqui Então eu posso dizer esse valor de ponto mais igual, e eu posso dizer um aqui. Está bem? E guarde isso até agora, tudo bem. Agora, se eu rolar para baixo, preciso invocar isso aqui para poder dizer Console, log de pontos aqui, e preciso dizer contador, ponto, preciso dizer incremento Você pode ver isso incrementado em um, eu posso copiar isso. Ok, eu posso incrementar em dois, incrementado em três, incrementado quatro e assim por diante, Agora, este é um exemplo de como você pode retornar valores de um método definido dentro do objeto Eu deveria dizer, certo? Vou te mostrar mais um exemplo em que você pode aceitar o parâmetro e retornar também. Digamos que eu queira incrementar o valor em um determinado valor Então, vou duplicar isso. Vou adicionar uma vírgula Aqui, posso dizer incremento B e vou aceitar um valor como num aqui, e vou adicionar esse valor num aqui Está bem? E eu vou devolver o valor. Agora, aqui, o que eu deveria fazer é aqui, se eu vier, posso dizer incrementar Pi, e eu posso adicionar dez aqui Então, idealmente, a saída deve ser 14. Se eu salvar isso, você pode ver que a saída é 14. Então, você está passando esse parâmetro e está obtendo isso como saída. Tudo bem. Então, é assim que você pode passar os parâmetros e também obter os valores de retorno dos métodos, como as funções dentro dos objetos são conhecidas como métodos. Então, estou me referindo a eles como métodos. OK. Mas se você estiver criando métodos dentro do contador, é assim que eles funcionarão. Tudo bem. Agora, mais um exemplo que eu gostaria de dar aqui é de objetos dinâmicos aqui. Desculpe, não são objetos dinâmicos, mas eu chamaria isso uma forma de definir métodos dinamicamente Está bem? Então, definindo métodos dinamicamente. Tudo bem. Então, digamos que eu tenha um método. Ok, vou chamar esse método dinâmico. OK. É um exemplo de como você pode criar métodos dinâmicos. Então eu tenho isso, e digamos que tenha um atributo, vou adicionar um atributo, assim mesmo. Vou chamá-lo de valor zero. OK. O que você pode fazer é fazer o Console Log e ver o valor do ponto do método dinâmico. Oito. Então, isso lhe dará zero, é claro. Agora, eu não adicionei um método interno. Você pode adicionar o método dinamicamente após a criação do objeto Você pode fazer isso. Sim. Como você faria isso? Então, aqui, você pode vir. Você pode dizer método dinâmico, tot. OK. Deixe-me rolar para cima para que fique visível. Então, método dinâmico, tot, eu posso dizer, digamos, digamos, no alto aqui e eu posso dizer função OK. E eu não preciso de nenhum tipo de parâmetro. Vou dizer log de pontos do console aqui, e vou dizer olá dinâmico, certo? E opa, vou descer e dizer ponto do método dinâmico. Eu vou dizer Chi, algo assim. Você verá a saída hello dynamic aqui. Então, essa função ou método, devo dizer, método foi adicionado dinamicamente ao objeto após a criação do objeto Então, isso é absolutamente possível. Os métodos podem ser adicionados aos objetos em qualquer ponto do programa, não apenas no momento da criação do objeto. Lembre-se disso, tudo bem, você pode ver um código em que as coisas são assim, então não se confunda Ok, isso é normal em JavaScript. Tudo bem Agora, isso é sobre objetos normais. Também quero falar um pouco sobre objetos aninhados, ok, então como as funções funcionariam em objetos aninhados, Para isso, vamos dar um exemplo de carro. OK. Então, vou criar um objeto de carro rapidamente. E digamos que o carro tenha um atributo chamado marca. Tem a marca Toyota, ok? E então o que vou fazer é dizer que tem um objeto aninhado aqui chamado especificações Vou chamar o atributo dentro das especificações de velocidade. E eu vou ter uma função chamada especificações de exibição. Então, isso é um método, na verdade, não uma função. Desculpe. OK. Portanto, terminologias, não mexa com terminologias. Eu tenho o hábito de fazer isso, mas espero que você chame isso de método, sempre, porque eles são chamados de métodos dentro de objetos, certo? Portanto, você pode dizer que a velocidade é ou simplesmente exibir a velocidade aqui. Então, eu posso dizer velocidade e vou acrescentar que você pode dizer isso para velocidade. OK. Agora isso está feito. Agora, como você chamaria isso de especificações deslocadas, certo Então é um objeto dentro de um objeto, certo? Portanto, não preciso fazer o log do console. Vou me livrar disso. Mas posso dizer especificações do carrinho, pequenas, especificações deslocadas. Você pode ver. Então você verá que a velocidade é 120. Então, é assim que você pode se referir a métodos criados em objetos aninhados, objetos dentro de objetos Então é assim que você pode fazer as coisas. Tudo bem Então, espero que isso seja útil e espero que você tenha conseguido acompanhar como as coisas funcionam com métodos dentro dos objetos aninhados Tudo bem Há também uma versão abreviada OK. Agora, deixe-me mostrar isso para você. Um direito? Então, o que eu faria é usar o objeto existente aqui. OK. Vou fazer uso do objeto existente. OK. Então, versão abreviada aqui Então, vou dizer que é uma abreviatura de pessoa. OK. Vou chamar essa pessoa de forma abreviada Tudo bem E agora, aqui, o que podemos fazer é, em vez de ter esse tipo de sintaxe aqui, eu posso simplesmente ter uma função como essa OK. Portanto, não estou usando as funções de seta aqui. Tenha isso em mente, certo. Mas vou adicionar um ponto e vírgula e isso. OK. E sim, é isso. E você pode usar a abreviatura pessoal aqui. Tudo bem E isso deve funcionar perfeitamente bem. Você pode ver. Ok, dizendo oi, eu sou John porque isso se refere à pessoa John. Você pode ver isso aqui. OK. Então você pode ver, oi, eu sou uma abreviatura. Tudo bem. E esta é uma versão abreviada, você também pode ver esse tipo de sintaxe você também pode ver esse tipo de ao trabalhar Está bem? Então, métodos criados dessa maneira. Tudo bem Então, essa é uma maneira, tudo bem. Outra forma é usar funções de seta, e então você também tem uma expressão de função como esse tipo de sintaxe, certo? Então, todos eles são válidos e funcionariam perfeitamente bem. Tudo bem. Então, espero que esteja claro para todos vocês e espero que tenha sido útil. 8. Matrizes de supercarga: métodos avançados em JavaScript: Agora, quando você está trabalhando com matrizes, há muitos métodos embutidos que o Ja Script fornece E você pode usar esses métodos para trabalhar de uma maneira melhor ou para realizar muitas tarefas ao trabalhar com matrizes. Tudo bem Agora, vamos dar uma olhada em alguns métodos que existem e você entenderá melhor quais são esses métodos e como você pode usá-los em sua programação diária. Então, aqui você pode ver essa lista, certo. Uh, então há esse mapa, filtre, reduza a forragem. Vamos examinar cada um deles, certo, e eu vou explicar tudo um por um, certo? Então, primeiro, falaremos sobre o mapa aqui. Tudo bem. Vou simplesmente anotar isso, e vou levar isso para a nova linha. Por aqui e eu vou ampliar um pouco. Tudo bem Agora, o que é mapa? Agora, o método map transforma cada elemento em uma matriz e simplesmente retornará uma nova matriz. Como isso funciona? Agora, essa transformação pode ser qualquer operação ou qualquer transformação que você queira fazer em cada elemento da matriz e coletar todos os elementos transformados novamente em uma matriz. Agora, deixe-me dar um exemplo de como você pode usar o mapa. Agora, digamos que eu tenha uma matriz chamada números. Tudo bem Digamos que seja uma matriz simples, com elementos como um, dois, três, quatro e cinco aqui. Tudo bem Agora, digamos que eu tenha um requisito em que eu queira dobrar cada elemento dessa matriz Está bem? Então, existem muitos elementos e eu quero dobrar cada elemento que existe. Então dois se torna quatro, um fica um ou um se torna dois, na verdade, ok? Torna-se quatro, três se torna seis, quatro se torna oito e cinco se torna dez. Tudo bem Então, o que eu posso fazer é ter uma função aqui, ok? Então eu posso ter uma função chamada double aqui. Ok. E o parâmetro pode ser um número aqui. Ok. E eu posso dizer que retorne um em dois. Agora, essa é uma função que vai me ajudar a dobrar cada elemento. Agora, como vou aplicar essa função a cada elemento da matriz? Está bem? Então, para isso, o que vou fazer é dizer números, que são uma matriz aqui. Eu vou dizer ponto. No momento em que você disser ponto, verá que esses são todos os métodos aos quais você tem acesso, certo? E você tem um método aqui, que é o mapa. Então, vamos dizer mapa aqui. Está bem? Se você passar o mouse sobre isso, verá chamadas da função de retorno de chamada definida em cada elemento de uma matriz e retornará uma matriz que contém o resultado Está bem? Então eu vou dizer mapa, e vou passar a função aqui, ok? Eu vou simplesmente dizer OK. Certo? Agora, o que isso vai fazer é aplicar essa função a cada elemento da matriz. Tudo bem? Agora, o retorno aqui é uma matriz novamente. Então, o que eu preciso fazer é coletar os elementos duplicados de volta em uma matriz Então eu preciso dizer números duplos ou duplos, algo assim Está bem? E então eu posso dizer console dot Log aqui. Ok. Opa, então eu preciso dizer log de pontos do console e preciso dizer double Números, algo assim. Tudo bem E eles deveriam dar o resultado. Agora, você pode ver aqui, dois, quatro, seis, oito, dez, certo? Então, cada elemento foi duplicado. Como isso funcionou? Funcionou com a ajuda da função de mapa, desculpe, método de mapa dentro de matrizes Então, aplicamos essa função específica chamada double que criamos aqui, à direita, a cada elemento da matriz. Está bem? Então você pode até ter um registro do console aqui. Diga log de pontos do console, e você pode dizer aqui, você pode imprimir um número aqui. Ok. Assim, você saberá contra qual número isso está sendo chamado. Então você pode ver que foi chamado em um, dois, três, quatro e cinco. Se eu mudar isso para 14 aqui. E se eu salvar isso, você verá essa virada para 14. Portanto, ele está sendo chamado para cada elemento que existe na matriz. Está bem? Não precisamos desse registro do console. Ok, acabamos de começar isso para obter informações adicionais, mas é assim que funcionará. Tudo bem Então, espero que esteja bem claro como isso está funcionando e como o mapa pode ser útil. Agora, aqui temos uma função separada aqui, certo? Essa é uma função nomeada. Na verdade, você pode converter isso em uma função sem nome ou em uma função anônima Ok, então você não precisa de uma declaração de função separada para isso. Agora, o que estou dizendo sobre como você faria isso? Está bem? Então, eu não vou deletar isso, mas na verdade eu copiaria essa coisa aqui. Está bem? Agora, esse é um exemplo de uso anônimo, certo? Função anônima, bem aqui. Então foi assim que obtivemos os números duplos em que aplicamos essa função a cada elemento na matriz usando o mapa, certo? Então, eu vou dizer duplamente anônimo. Ok. E aqui, em vez de passar essa função aqui, o que eu posso fazer é colocar toda essa definição aqui. Eu posso copiar isso e colar aqui. E em vez de dobrar, isso será função. Ok. Eu serei a palavra-chave da função. Ok. Então, deixe-me rolar um pouco para baixo e diminuir o zoom um pouco. Então você pode ver essa sintaxe aqui. Estou dizendo que deixe o dobro do anonimato. Então, isso pode ser qualquer variável que você tenha, que pode fazer o trabalho de coletar matrizes, ok? Matrizes, como nessa coisa, toda essa operação retornará uma matriz, certo? Então você precisa de algo para coletá-lo, certo? Então, eu estou dizendo mapa de pontos de números. E em vez de passar o nome da função, estou criando diretamente a função aqui. Então, eu estou dizendo função, num, retorne num em dois. Isso é o que estou fazendo imediatamente. Tudo bem E então eu posso simplesmente obter esse registro do console aqui. E eu posso simplesmente dizer duplamente anônimo, e eu posso salvar isso. A saída que você obterá será a mesma. Você pode ver que essa é a saída da parte anterior do código e essa é a saída da parte atual do código. Está bem? Não há alteração na saída, mas há, por exemplo a sintaxe que escrevemos nesta Está bem? Isso é muito conciso. Ok, conciso, então o primeiro. Está bem? Então, sim, este é um exemplo de função anônima em que estamos criando uma função sem nome apenas por causa dessa operação Então, quando você usaria esse tipo de sintaxe e quando usaria esse tipo de sintaxe Portanto, se você quiser que a função seja reutilizada em vários outros lugares além dessa matriz , você deve ter uma função separada e pode usar esse tipo de sintaxe Mas digamos que, se você estiver criando uma função apenas para fins de transformação de matriz, poderá ter essa função assim. Isso é muito mais conciso e muito mais legível. Você pode dar um passo adiante aqui. Vou apenas duplicar tudo isso aqui. Ok. Você pode dar um passo adiante e, em vez de, como aqui, função anônima, eu posso ver a função de seta. Então, aqui, vou mostrar um exemplo usando a função de seta. Está bem? Então aqui, você pode dizer seta, ok, função de mapa, e aqui, estamos vendo um, certo? Portanto, toda essa sintaxe será convertida em função de seta Então essa palavra-chave de função não é necessária, ok? E então isso se torna o tipo de sintaxe da função de seta. Está bem? E então, em vez de imprimir duplamente anônimo, vou imprimir seta dupla. Está bem? Você pode ver que a saída é a mesma, certo? Agora, essa sintaxe pode ser reduzida ainda mais. Está bem? Não precisamos de colchetes ondulados porque há apenas uma afirmação, Só há uma declaração. Então, colchetes encaracolados são necessários Não, não é necessário, certo? Então eu vou até aqui, vou me livrar dos colchetes, e isso vai em uma única linha, O retorno também não é necessário agora. Ok. Então eu vou me livrar do retorno. Você pode ver. E esses parênteses, colchetes redondos também não são necessários Eu vou me livrar deles também. Você pode ver como isso é conciso, certo. Então, você pode ver apenas nesta expressão ou apenas nesta declaração que estamos, na verdade, transformando toda a matriz aqui Se você salvar isso, a saída não será alterada. Você está obtendo a mesma saída, mas veja a sintaxe, pessoal, certo? Essa é a primeira sintaxe. Observe com cuidado. Função separada. Você está passando o nome da função aqui, você está aplicando essa função para cada elemento na matriz, certo? Você pega o elemento transformado e o está imprimindo. Você está usando uma função anônima onde na verdade, está passando essa função aqui. Essa é uma função anônima sem nome. Você está aplicando essa função para cada elemento no DRA. E, finalmente, usando as funções de seta, você pode ver que a sintaxe é muito mais simplificada, concisa e fácil Ok. Então, você verá esse tipo de sintaxe sendo muito usado Ok, e muitas pessoas ficam confusas e não entendem o que está acontecendo aqui, especialmente pessoas que são novas em JavaScript. Tudo bem? Se você tem uma boa experiência em JavaScript, talvez saiba o que é isso. Mas pessoas que são novas em JavaScript e vêm de diferentes linguagens de programação, como Java, C plus plus, Python, ok Muitas vezes é difícil para eles porque, você sabe, essa coisa toda, você sabe, essa coisa toda foi reduzida a uma expressão tão pequena aqui. Certo. Então, espero que isso esteja bem claro. Eu fui propositalmente passo a passo. Eu mostrei como isso está sendo feito primeiro, como você pode passar uma função nomeada aqui. Você pode ver como você pode ter uma função anônima e como você pode ter diretamente a função de seta. A maioria dos tutoriais de assuntos aborda diretamente as funções das setas. Ok. Então, se você aprender sobre o método de mapeamento no RAS, eles abordarão diretamente o uso dessa sintaxe, certo? Mas eu queria que todos vocês entendessem e seguissem passo a passo, certo? Agora, podemos aplicar esse tipo de sintaxe a todos os outros métodos, certo, porque você entendeu um, então achará muito fácil entender o resto, certo? Então, isso é sobre o mapa. Vocês podem fazer qualquer tipo de transformação, pessoas, qualquer tipo de transformação se você quiser fazer esses três X, ou fazer esses dez X, por exemplo, você obterá dez, 20, 30, 40, 50, ok? Qualquer tipo de transformação, certo? Então, isso é sobre o mapa. Agora, o próximo na linha ou o próximo na fila é o filtro Está bem? Agora, o que é filtro? Vou simplesmente anotar isso. Está bem? Portanto, o filtro retornará em uma nova matriz com elementos que passam por uma condição. Agora, haverá cenários em que você deseja filtrar elementos em uma matriz com base em uma determinada condição, certo? Então, nesse caso, talvez você queira filtrar, certo? E é aí que o filtro entra em cena. Agora, o filtro é um método que oferece uma maneira muito concisa de fazer isso Está bem? Então, digamos que temos essa matriz num ok com dois, quatro, desculpe. Esse não é o elemento. É um, dois, três, quatro, cinco. Certo? Isso é o que é a matriz. Digamos que eu queira obter a lista de números pares. Então eu posso dizer números pares constantes aqui, e eu posso dizer números pontos. Eu posso dizer filtro, algo assim. E aqui, eu posso dizer num, eu posso dizer que num módulo dois é igual a zero aqui Ok. E então você pode simplesmente imprimir no Oops Então você pode simplesmente imprimir os números pares aqui. Então, é algo assim. Está bem? Então, recebo um erro informando que N não está definido. Ok, não deveria ser N, é num. Sinto falta da impressão. Sinto falta de digitar Num. Ok. Então você pode ver, esta é uma lista de números pares. Então, o que está acontecendo é que esse é um teste que mencionamos aqui, certo? Isso é um teste. Então, qualquer elemento que esteja passando nesse teste é retornado e adicionado a essa nova matriz ou é filtrado e adicionado a essa nova matriz E você está imprimindo nesta nova matriz, certo? Então, toda a matriz é filtrada e você tem uma matriz filtrada que corresponde a essa condição, certo Agora, digamos que se você tem três aqui, você só obterá números que são divisíveis por três Você pode ver três aqui. Ok. Então é assim que o filtro funciona, ok. O próximo método que tenho é reduzir. Agora, o que é reduzir? Reduce fará o trabalho de reduzir o array a um único valor, certo? Agora, isso acontece aplicando uma função, ok? E pode haver muitos casos de uso se você quiser adicionar, digamos, a soma, se quiser obter a soma de todos os elementos em uma matriz, então você pode usar a redução aqui. Então, vou seguir nosso exemplo de matriz, e digamos que queremos obter a soma de todos os membros da matriz, certo? Então, eu posso dizer números aqui. Isso é o que nossas matrizes, posso dizer, reduzem aqui. Então, eu quero reduzir essa matriz. Ok. Agora, vou ter que passar o acumulador Ok. Então eu vou dizer acumulador Você pode ver a sintaxe aqui. Você pode obter o valor anterior, OK, e você pode obter o número real. Então, vou chamar o acumulador aqui e vou ver o valor atual Ok. Então é isso que eu vou dizer, ok? E você pode ver a documentação da função que aceita até quatro argumentos A meta de soma reduzida chama a função de retorno de chamada uma vez para cada elemento na matriz, certo? Então eu vou dizer acumulador agora, o que é um acumulador? Portanto, o acumulador acumulará o valor de retorno de chamada. Está bem? Então, com cada iteração, ok? A cada iteração, teremos acesso ao valor atual, certo? Então, quando sim, deixe-me rolar para cima. Então, quando a iteração for com uma, tudo bem, ela transformará uma em foto Isso o adicionará à soma. Então, com a próxima iteração, ele adicionará dois à soma E qualquer que seja a soma de cada iteração, ela está sendo mantida pelo acumulador, certo? Por aqui. Então, estamos dizendo acumulador, valor atual, e aqui, vou dizer acumulador mais valor atual Ok, é isso mesmo. E então eu vou dizer que o log do console está aqui. Vou entrar no Console e preciso coletar isso em Preciso coletar esses oops Então eu preciso coletar isso em uma variável, digamos, vamos somar. E eu vou comer alguns aqui. Agora, se eu disser Salvar, você verá 15 saídas SD. Tudo bem Então, espero que isso faça sentido em relação à forma como isso está funcionando, certo? E você tem uma boa clareza aqui. Ok, então eu levei isso para uma nova linha e só para que fosse realmente visível para todos vocês, mas não era. Tudo bem Mas sim, isso é o que todo o método de redução é. Tudo bem Agora, então temos para cada um. Agora é para cada um. Então, para cada um, executará a função fornecida uma vez para cada elemento da matriz. Ok. Então, o que eu posso fazer aqui é ir para a nova linha. Ok. Algo parecido com isso. E agora eu posso dizer o número. Ok, números ensinados para cada um, eu posso dizer. Então, para cada elemento na matriz, o que eu quero fazer é imprimi-lo, digamos. Vou pegar a saída para o console e, aqui, vou imprimir isso. Opa, sinto falta de remover isso, vou guardar isso. Você pode ver um, dois, três, quatro, cinco, então isso é matriz, certo? Então é assim que quatro funcionam cada. Qualquer tipo de função, você pode aplicar a cada elemento na matriz. Tudo bem? Temos algo chamado “ encontrar” aqui. Fine retornará o primeiro elemento que satisfará uma condição específica aqui. Está bem? Então é isso que é encontrar. Está bem? E como você pode fazer uso disso? Então, digamos que queremos obter o primeiro número par na matriz, certo? Digamos que esse é o requisito. Então eu posso dizer números ponto a encontrar aqui, e eu posso dizer número aqui, e será um percentual dois é igual a zero, algo assim. Ok. E eu preciso coletar isso, então eu preciso coletar isso, na verdade, diretamente em uma variável para que eu possa dizer, deixe primeiro par, vou chamar isso de primeiro número de Steven E eu vou dizer log aqui, log do console, e eu vou dizer para Steven Salve isso e você verá que o primeiro par são dois aqui, certo? Então, isso obterá o primeiro elemento que satisfaça uma condição específica. Tudo bem Espero que isso esteja claro. Nós temos alguns aqui. Então, alguns verificarão se pelo menos um elemento passa em um teste específico, certo? Então é isso que ele verificará. E aqui, eu vou apenas fazer uso disso. Agora, a definição de soma diz que verificará se pelo menos um elemento passa em um teste específico. Agora, esses são testes que você precisa definir como a função aqui. E se o teste for aprovado por pelo menos um elemento na matriz, você obterá um booleano verdadeiro, certo? Então, isso retorna booleano. Então eu posso dizer números aqui, ponto, e podemos fazer uso da soma aqui. Ok. E eu vou dizer que não. Ok. E a condição que eu quero verificar é um número menor que zero, digamos, por exemplo. Está bem? Então, isso retornará booleano, então eu posso dizer let e tem negativo Ok, então se for negativo, vai me dar uma linha booleana de quedas Eu posso registrar isso e direi que tem negativo. Se eu salvar isso, você verá quedas. Portanto, essa matriz não tem nenhum tipo de número negativo. Ok. Na verdade, você pode substituir isso para obter uma matriz de números negativos. Então você pode dizer menos um, dois, três, opa, três, quatro e assim por diante, certo Então, isso tem números negativos, certo? Estou cumprimentando uma variedade em tempo real. Se eu salvar isso, você obterá a saída TruSC. Portanto, faz sentido saber como isso pode ser usado para verificar se pelo menos um elemento passa no teste. Agora, isso é útil em cenários Se você quiser executar uma verificação rápida na matriz e obter um booleano, sim ou não, e com base nesse booleano, sim ou não, talvez queira fazer algo no aplicativo Está bem? Então é aí que é útil aqui. Ok. Cada. Agora, tudo é apenas evosão de soma Portanto, alguns verificarão se pelo menos um elemento passa no teste, mas todos verificarão se todos os elementos passaram no teste. Então, eu posso realmente duplicar isso aqui, e eu posso dizer, tem ou vou dizer tudo, tudo bem E vou imprimir isso aqui em todos os lugares. E em vez de uma soma, eu vou ter todos. Então, cada elemento é menor que zero? A saída é falsa? Não, porque um elemento é cada elemento, na verdade. Então, a condição é se cada elemento é menor que zero? Então isso é falso. Desculpe, fiquei um pouco confuso. Então, como temos três elementos que não são menores que zero, um é menor que zero, certo? Então, isso está absolutamente bem. Agora, se eu remover o negativo disso, ok, você verá que a cedência cede aqui E isso porque nem todos os elementos são menores que zero. Então, para ser verdade aqui, terei que tornar todas elas negativas. E se eu salvar, você vai se tornar verdade porque agora todos os elementos são negativos aqui, ok? Assim, você pode executar esse tipo de verificação com a ajuda de cada um. Você tem concat. Tudo bem Então isso é outra coisa interessante, ok? Se você quiser combinar duas matrizes em uma, você pode fazer uso disso Então, digamos que eu tenha mais números aqui. Ok. Mais números são seis, sete e oito aqui, certo? Então, o que eu posso fazer é dizer números ou deixe-me dizer ok, números, eu vou dizer números com pontos concat aqui e eu posso dizer mais números, certo? E eu posso atribuir isso a uma nova matriz, certo? Então, posso dizer let new array, algo assim. Vou imprimir em uma nova matriz. Ok. Vou dizer que o log do console está aqui e vou dizer um novo array. Vou guardar isso e você pode ver, um, dois, três, quatro, cinco, seis, 79. Tudo bem Eu também posso adicionar oito aqui. Não sei por que perdi isso. Então, sim, você tem isso, certo? Então, sim, isso é concat. Ele se conectará a matrizes, fatiará. Então, slice retornará uma parte de uma matriz, tudo bem. Deixe-me mostrar isso para você. Então, posso dizer que vamos deixar as fatias dormentes aqui. Ok. E eu posso dizer números aqui. Uh, números, totais, fatias, e posso especificar aqui que quero que o índice inicial do Índice um indexe três partes da matriz Ok. Agora eu posso registrá-los, registrá-los aqui para que eu possa dizer slice numb. Você pode ver dois e três. Está bem? Então, dois e três aqui. Então você está apenas cortando a matriz. Ok. Emenda agora, o que é fatiar Isso ajudará você a remover ou substituir os elementos. Ok. Agora, como isso funciona? Então, deixe-me mostrar isso para você. Então, digamos que eu tenha ARE de frutas. Tudo bem, então deixe-me rolar para baixo. Então, posso dizer que deixe as frutas aqui. Ok, eu posso dizer maçã. Eu posso comer opa, eu posso comer banana Ok, e eu quero, digamos, laranja. Ok. Ok. Isso está feito. E digamos que eu queira, eu quero remover a banana e adicionar manga Então eu vou dizer frutas, tot, splice. Ok. Eu vou dizer em um índice. Está bem? Então, estou especificando em um índice, exclua um Ok. Você pode ver a contagem de exclusões. Então, iniciando um índice, exclua um elemento e adicione manga Algo parecido com isso. Está bem? E então se você imprimir em frutas, verá a saída como maçã, manga e laranja, você pode ver Então, sim, é assim que funciona. Participe. Agora, o que significa unir-se? Então, às vezes, haverá um requisito em que você deseja unir e obter todos os elementos de uma matriz em uma string Então você pode absolutamente fazer isso. Então, posso dizer que deixe todas as frutas. Ok, eu posso dizer frutas que se juntam e como eu quero participar? Então, esse é um separador que eu quero adicionar aqui. Ok. Então, vou adicionar uma vírgula Quero que todos os nomes das frutas sejam separados, e posso dizer todas as frutas aqui. Você pode ver maçã, manga, laranja. Agora, o que quer que eu adicione aqui, se eu adicionar exclamação, você verá a exclamação sendo adicionada para todos os elementos Então eu vou ficar em coma porque isso é o que parece natural aqui, certo? Reverter. Agora, o inverso é bem simples, muito direto Você pode obter o reverso de um número com a ajuda desse método. Então, eu posso dizer números com pontos invertidos. Algo parecido com isso. Ok. E aqui, eu posso dizer log de pontos do console, e eu posso dizer número reverso. Você receberá 54321. Tudo bem? Em resumo, é claro, como o nome diz, também é muito fácil de identificar e entender. Está bem? Você pode classificar os elementos em uma matriz, certo? Então você pode dizer classifique. E você pode dizer números aqui, T, classificar. Ok. E você pode realmente especificar aqui. Então, vou acabar com isso aqui. Ok. Não adicionarei nenhuma lógica, depois adicionaremos a lógica e veremos quais são os problemas que estamos resolvendo. Está bem? Então, se você usar o tipo dessa maneira. Está bem? Na verdade, a função que criamos já está ordenada, certo? Então, deixe-me atualizar os números aqui. Ok. Então, vou atualizar os números. Vou dizer três, um, e vou adicionar dez aqui e dois, por exemplo. Ok. E eu vou ver isso. Agora você verá que, na verdade, não está classificado na ordem crescente Está bem? Agora, isso ocorre porque, por padrão, é uma string. Então, essa comparação porque o que está acontecendo é que a comparação está acontecendo na forma de string. Portanto, os números não são classificados da maneira correta. Agora, para classificar isso da maneira correta, o que podemos fazer aqui é adicionar dois argumentos, usando as funções de seta, para que eu possa dizer A e B aqui, e usarei dois argumentos, e direi A menos B aqui Ok, por aqui. E se eu salvar isso, você verá um, dois, três e dez. Então, está resolvido aqui agora. Mas que mágica essa lógica fez com essa coisa de classificação aqui? Está bem? E como isso funcionou? Tudo bem Então, o que aconteceu é A e B são os dois elementos das matrizes que serão comparados a qualquer momento, certo? E essa comparação será feita pelo método de classificação aqui. Ok. Então, esses dois argumentos são passados primeiro. Ok, dois argumentos são passados nesses parâmetros. E então o que aconteceu é que A menos B é calculado. Agora, se A menos B, agora vamos dizer se isso está funcionando em três e um, certo? A é três e um é B. Ok? Agora, A menos B é dois. O número é positivo. Certo? Então, B será classificado antes de A porque se o número for positivo, significa que B é menor que A. Então B virá primeiro. Se o número for negativo, o que acontecerá se A for movido antes de B, nesse caso, certo? E se o retorno for zero aqui, os dois serão considerados iguais e serão tratados igualmente. Ok, então isso é tratado pelo SOT aqui. Você só precisa passar isso porque, com a ajuda do sinal de menos aqui, eles são tratados como números e não como sequências de caracteres Tudo bem Então é assim que a classificação funcionará quando você estiver usando o SOT aqui. Tudo bem Então, isso é sobre as funções ou, devo dizer métodos em JavaScript com relação às matrizes, certo? E é assim que você pode usá-lo. Então você pode ver como começamos inicialmente. Começamos com o básico, por exemplo, como você pode passar uma referência de função aqui para o método map E então convertemos isso em anônimo, e então convertemos esse anônimo em mapa aqui. Desculpe, não é mapa, funções de seta, devo dizer, certo? E então vimos todas as funções, todos os métodos que existem com matrizes, certo? Então você pode ver ordenar, reverter. Tudo isso é útil em algum momento quando você está programando e trabalhando com matrizes para economizar tempo e também muito código, tornando seu código muito mais legível, tornando seu código muito mais legível, mas ajudando você a fazer as coisas de uma forma muito mais concisa e legível. Tudo bem Então, espero que você tenha conseguido seguir este guia passo a passo, e espero que tenha sido muito útil. 9. Projeto em destaque: crie seu próprio conversor de unidades: Tudo bem, então como vocês estão? Então é hora de construirmos um conversor de unidades que fará cada trabalho de conversão de um valor em unidades diferentes Então, ele vai se converter de uma unidade para outra. Se, por exemplo, eu inserir 100 aqui ou me deixar 110. E digamos que eu queira converter de metros para pés, eu posso converter isso, e você pode ver que 110 metros são essa quantidade de feeds Agora, posso dizer 150 aqui. Eu posso fazer com que isso seja convertido de quilogramas para libras. Você pode ver que agora está em libras, e eu posso até mesmo convertê-lo de Selsius para Fahrenheit Então você pode ver que um 50 Celsius é 302 Fahrenheit. Portanto, este é um conversor de unidades simples e também uma interface bem simples, nada muito sofisticado ou chassi Tudo bem Então, vamos construir isso. Então, aqui estou rapidamente no código VS, e temos esse arquivo HTML, o arquivo CSS e o arquivo JS de índice dentro de uma pasta. Todos esses três arquivos existem na mesma pasta. Eu tenho esse código HTML aqui e vou começar a modificá-lo aqui O título desta página específica será conversor de unidades aqui. Vou me livrar disso e terei o mesmo texto do conversor de unidades aqui que a tag H one. Tudo bem Agora, o que eu preciso aqui é a primeira coisa, eu preciso de uma entrada. Tudo bem. Então, vou dizer entrada de onde vou inserir o valor que desejo converter. Essa entrada será um número aqui. O tipo é número. ID é o valor de entrada porque eu preciso referenciá-lo do JavaScript para que eu possa obter os valores de entrada que o usuário inseriu. Preciso ter uma identificação aqui. Vou ter um espaço reservado chamado Inserir valor. Opa, algo assim, certo? E eu vou fechar isso. Então, a entrada está pronta. Agora, o que eu preciso fazer é ter oito menus suspensos e, para isso, vou usar a seleção aqui e vou ver o ID como tipo de conversão aqui. Então, que tipo de conversão eu desejo fazer. Dentro disso, eu vou ter a opção Ok. Agora, a opção é caber medidores aqui. O valor, então eu vou ter valor aqui. O valor é M a FT, certo? Então, eu vou ter valores individuais para isso, que eu posso usar. Então, aqui vou dizer metros a pés. Isso vai ser de quilogramas a libras quilo gramas a Ok, isso vai ser KG para LP. Tudo bem. E, uh, então isso vai ser C Celsius. OK. O que quero dizer é Celsius a Fahren de altura Algo parecido com isso. Está bem? Opa. Então, sim, eu corrigi a ortografia, e sim, isso é o que é Então, será de C a F aqui. OK. Isso está feito. Temos esse conversor de unidades, a caixa de texto e essa lista suspensa aqui que você pode ver para seleção de Agora, uma vez feito isso, após seleção e tudo pronto, eu preciso de um padrão aqui, certo? Então, posso dizer que o ID do padrão é converter. Está bem? Esse será o ID. E eu posso ter um texto chamado Converter aqui. Está bem? Então esse é um botão que está sendo exibido. E depois disso, preciso exibir também o valor convertido. Então, eu vou ter uma tag P, que vai dizer, opa, eu vou ter, então eu não preciso de ID aqui, mas posso simplesmente dizer convertê-la valor é o. Vou exibir o valor dentro de um intervalo aqui. Está bem? E eu terei zero inicialmente, e posso ter o ID convertido. Valor, algo assim. OK. Então isso é feito, você pode ver, o valor convertido é zero. Tudo bem. Então é isso no HTML. OK. Não há muita coisa que faremos no HTML. Apenas certifique-se de ter o arquivo Ja Script vinculado desta forma e você também pode ter o arquivo CSS vinculado aqui. Então, eu vou ter apenas o link para CSS, e eu vou fazer isso na parte superior OK. Então, dentro da cabeça, eu vou ter um link aqui. Bem, eu vou dizer folha de estilo. OK. E eu vou dizer href, styles dot css Tudo bem Isso está feito. Ok, sim, é isso. Então, isso é da parte HTML. Agora, vamos para a parte do Jascript e vamos ver como você pode criar um conversor JUnit usando JavaScript e adicionar um pouco de vida a esta página da web Esta página da web está bastante estática no momento. Nada aconteceria se você acabasse com os valores NC convertesse, certo? Porque não há vida. Então, quem vai acrescentar vida? Jascript, é claro Agora, a primeira coisa que preciso aqui são funções diferentes, certo? Então, essas conversões que eu vou fazer, eu preciso ter uma maneira de fazer essas conversões E o que eu posso fazer é que para cada conversão que eu quiser fazer, eu vou ter uma função criada, certo? Então, a primeira conversão que estou tendo aqui é de metros para pés, depois tenho quilogramas para libras, Celsius para Eu tenho três funções, certo, e preciso ter um ouvinte aqui que escute o clique do botão Converter Então isso é algo que precisamos fazer. Tudo bem. Então, eu não vou ter apenas funções normais. Claro, você pode fazer funções normais, mas eu vou ter um objeto, e vou chamá-lo de conversor de unidades, e vou criar os métodos dentro desse objeto, certo? Então eu vou dizer M a F T, não? E eu vou dizer que funciona aqui. OK. E vou me livrar disso aqui, o parâmetro será então, se for metros a pés, então o parâmetro dos parâmetros estará em metros, certo? E eu posso dizer que volte. Eu posso dizer metros de profundidade. E como você converteria um metro em pés? Então você precisa multiplicar um metro por 28084, certo? Então essa é a fórmula padrão. Não há nada chique por aqui. Está bem? Então, sim, isso está feito. Estou entendendo que estou recebendo uma nota de erro correta, é porque perdi uma nota igual a aqui. OK. Então, isso está feito. Este é o primeiro método que eu tenho M, que é de metros a pés. Eu vou ter KG para B aqui. Está bem? Essa será outra função aqui, e ela aceitará quilogramas porque estamos convertendo quilogramas em libras, certo Então, eu vou dizer, volte. Eu vou dizer quilogramas em. E vamos multiplicar esse valor por 2,2 0462. Então, este é o multiplicador padrão. Se você quiser converter quilogramas em libras, basta pesquisar no Google como converter quilogramas libras e você encontrará qualquer número de fórmulas Estou usando esta. Está bem? Então este é um multiplicador que você tem C F. Então isso é de Celsius a Fahrenheit Então isso é de Celsius Vou adicionar uma função. Eu vou dizer Celsius, algo assim, e então aqui, eu vou dizer voltar Existe uma fórmula para converter Celsius em Fahrenit. Vou forçar a multiplicação por nove por cinco aqui e vou dizer mais 32, algo assim OK. Então, essas são todas as funções, devo dizer. Portanto, criamos métodos dentro do objeto e, é claro, você pode ter esses métodos criados externamente, bem como funções. Por que eu criei dentro do objeto é para fins de agrupamento lógico Agora, sempre que você tiver um programa de script de jaw, você pode criar objetos para fins de agrupamento, certo Então, aqui estou agrupando esses métodos, certo? Então, isso está feito. Então, vou começar a definir o ouvinte aqui, então vou dizer documento aqui Opa. Isso foi convertido em documento. OK. Vou dizer ponto e obter elemento por ID aqui. Ok, e eu vou dizer converter. Por que converter? Porque esse é o ID que definimos aqui no botão HTML for, certo? Então é a isso que precisamos nos referir se você estiver se referindo ao botão aqui e eu direi “clique aqui”. Está bem? Então, ao clicar nisso, precisamos usar as funções de seta, e eu terei a lógica do que acontece ao clicar. Está bem? Agora, a lógica pode ser tão simples quanto exibir um alerta. Está bem? Se eu salvar isso e disser converter, ok? Não há nenhuma caixa de alerta sendo exibida. Portanto, não está funcionando porque aqui, o C para clicar não pode ser maiúsculo. Tem que ser pequeno. É uma palavra pequena. Está bem? Tudo é pequeno com um clique. Agora, se eu mudar isso, funcionará. Você pode ver. Agora, precisamos ter a lógica aqui. Está bem? Então, isso está sendo acionado com o clique do botão. OK. Então, qual é a lógica? Como definiremos a lógica? Então, a primeira coisa é que precisamos ver qual opção é selecionada a partir disso. OK. Então, fora dessa lista suspensa, qual opção está selecionada, Então, quando também tivermos isso, precisamos obter o valor do texto de entrada aqui porque esse é um valor que vamos converter. Portanto, o valor do texto de entrada e a opção do menu suspenso. Essas duas coisas que precisamos trazer para cá. OK. Então, eu vou dizer deixe o valor de entrada aqui, e eu posso dizer ponto do documento. Eu posso dizer get element by ID aqui. OK. E eu vou dizer valor de entrada. OK. O que é valor de entrada? O valor de entrada é o ID que você atribuiu aqui. É isso que estamos recebendo aqui. Está bem? Isso está feito, e vamos dizer o valor do ponto aqui. OK. Nós temos isso aqui. Agora, isso estaria em string por padrão, certo? Você precisa fazer uso disso para o cálculo, certo? Porque você passará esse valor para essa função. Então, o que podemos fazer é fazer uma conversão explícita aqui Podemos dizer pass float e opa, você pode vir aqui e aqui, você pode fazer isso, algo assim, certo Portanto, temos um valor flutuante de qualquer usuário inserido no TextFX Tudo bem, isso está feito. Agora eu posso dizer que deixe a conversão. Digite aqui. Qual é o tipo de conversão? Que tipo de conversão você deseja fazer aqui? Então, posso dizer que o ponto do documento obtém o elemento por ID. E vou me referir ao tipo de conversão. OK. Agora, o que eu recomendaria está aqui, você deve copiar. Então aqui você pode ver, esse é o ID. Você pode copiar esse ID e adicioná-lo aqui. Ok, em vez de digitar. Porque se houver um único erro, você não obterá o valor corretamente. E eu posso dizer valor aqui, certo? E aqui, quando tivermos isso, posso exibir isso em alerta. Posso dizer valor de entrada, vírgula, posso dizer tipo Cosion. Algo parecido com isso. Você pode ver NN Eu posso inserir 100. Você está vendo 100 aqui, deixe-me congenar esses dois Então eu posso dizer algo assim. OK. Então, se você adicionar 200, verá 200 e metros em pés, certo? Se eu mudar para quilogramas para libras, você verá KG para LB, certo Porque você está recebendo o valor. Por aqui. Qual é o valor? O valor é algo que você definiu aqui em relação à opção. Cada opção tem um valor e você está se referindo ao valor aqui em HTML. Você pode ver Celsis Fahrenit C F. Então você está obtendo tudo perfeitamente, mesmo se você inserir, digamos, se eu inserir um valor de ponto flutuante, você obterá esse valor você obterá esse Está bem? Até aí tudo bem, então podemos recuperar o que o usuário está inserindo no que chamamos de formulário aqui, certo? Agora, o que vou fazer é adicionar uma variável aqui. Então, eu posso dizer convertê-lo. Valor. Então, por qual é o valor convertido? Está bem? Então, posso dizer valor convertido. Ok, e o valor convertido é igual a, então eu posso usar o tipo de conversão aqui. Agora, terei uma condição se o tipo de conversão for igual a M dois FT. Está bem? Se o tipo de conversão for igual a M para FT, direi conversor de unidades para FT porque essa é uma função ou o nome do método, devo dizer, passarei o valor de entrada. OK. Caso contrário, o que eu faria está aqui. Ok, caso contrário, eu teria outro cheque aqui. Eu direi que o tipo de conversão é igual a. Eu vou dizer KG para LP. Apenas certifique-se de ter essas palavras-chave corretamente. Se quiser, você pode copiá-lo do arquivo HTML. Mas qualquer tipo de erro de digitação errará a condição. Está bem? Então você pode dizer tag do conversor de unidade, você pode dizer KG para LB aqui e você pode passar o valor de entrada Algo parecido com isso. Isso está feito. Vou mandar meu cólon aqui. Agora, aqui, se ambos forem falsos, se não houver correspondência para ambos, farei com que o conversor de unidades C F porque isso é o que resta, certo? Portanto, ele deve ser selecionado de forma distinta. Então essa fórmula está pronta. Essa condição está concluída. O que estamos fazendo aqui é verificar aqui se o tipo de conversão é de metros para caber. Se isso for verdade, com a ajuda do operador ternário, estamos fazendo essa chamada aqui, essa chamada de método Se isso não for verdade, então teremos outro operador ternário aqui Que está aninhado. Então, estamos recebendo outro cheque. Se isso for verdade, se isso for verdade, então isso é executado, caso contrário, isso é executado porque isso é o que resta, certo? Então tem que ser qualquer um desses três, certo? Agora, aqui, o que vou fazer é dizer documento, ponto, obter elemento por ID e, aqui, vou dizer valor convertido. Está bem? Por que converter o valor? Porque temos esse ID para span. Então, vamos obter esse valor convertido. Está bem? Eu vou dizer conteúdo de texto com pontos. Algo parecido com isso. Eu vou dizer valor convertido aqui. Está bem? Porque essa é uma variável que está tendo esse valor criado, certo? Então isso está feito. Agora, o que posso fazer é salvar isso e deixar que testemos isso. Então, se eu disser 100 metros a pés, converta, você pode ver. Há a saída de quilogramas em libras. Aí está a saída. Se você tem Celsius a Fahrenheit, aí está a saída. Você pode ver. Agora, uma melhoria que você pode fazer é que haja três decimais ou haverá número de decimais porque não há restrição Então você pode adicionar tot a fix aqui e você pode dizer aqui, algo assim Então, agora ele será fixado com duas casas decimais aqui, 220,46 Está bem? Algo assim, aqui. Tudo bem Então, sim, é assim que você pode criar uma moeda ou, desculpe, não uma moeda. Este conversor de unidades. Me desculpe Tudo bem. Você pode ter alguma validação aqui para dizer se isso não é igual a não um número. Ok. Desculpe, é AN. Então eu preciso passar o valor de entrada aqui, e então você executaria isso, o. Então você executaria isso, você moveria essa frase final no final para aqui , algo assim. Ok. E vou adicionar algo assim aqui. Ok, isso está feito. E se essa condição falhar, você poderá exibir um alerta. Ok, insira um número válido. Então, uma pequena validação aqui, verificação de validação que garantirá que qualquer usuário esteja inserindo aqui seja um número válido. Está bem? É isso que essa verificação fará. Ok. Então, digamos que se eu inserir 100 aqui, funcionará bem. Mas se eu inserir 100 ou qualquer outra coisa aqui, não consigo digitar nada aqui porque esse tipo é um número. Mas ainda assim eu adicionei esse cheque aqui. Se por acaso, isso não for um número, é uma condição Nian, então ele retorna um valor booleano que indica se o valor é um valor reservado Nian, não um Se for um, isso não é igual a, então, se essa condição for verdadeira, somente isso será executado, caso contrário, você receberá um erro. Por aqui, que é um alerta. Tudo bem. Então, isso foi feito até agora. Agora, vamos mudar para os estilos aqui. Adicionaremos um estilo básico e faremos com que pareça decente aqui Ok. Então, vou começar com Body aqui. Imediatamente, vou dizer família de fontes. Vou selecionar Sinef aqui. Ok. Algo parecido com isso. E então eu tenho o texto alinhado aqui. Eu vou dizer centro. Eu vou dizer margem, a margem será zero. Deixe-me ver se é isso. Você pode ver que tudo está centralizado agora. A margem também é preenchimento zero, vou dizer 20 pixels aqui Eu vou dizer que a cor de fundo é que eu posso ter esse azul Alice. Você pode selecionar o que quiser, ok? Eu tenho um pouco de tema azulado. Se você quiser branco, você pode selecionar fumaça branca. Depende totalmente da sua escolha, certo. Você pode selecionar o que quiser aqui. Ok. Isso está feito. Vou adicionar um espaço. Agora, depois do corpo, eu vou para H one. H one é onde estamos exibindo essa unidade, convertendo um título aqui. Então eu vou dizer cor, e eu posso ter preto. Eu deveria ter preto aqui. Vou ficar com o preto. Você pode personalizar isso se quiser, tudo bem. Agora, para entrada, insira onde o tipo de tipo é número, ok. Então, tudo bem e vou adicionar uma vírgula para selecionar aqui Ok. Para ambos, tipo, eu preciso adicionar, digamos, preenchimento Ok. Portanto, não há acolchoamento. Então, se você digitar 100 aqui, não há preenchimento, então eu vou dizer preenchimento, dois pontos Ok. Você pode ver uma quantidade razoável de preenchimento, você pode adicionar margem aqui Ok, margem de dez pixels. Ok, você pode ver um pouco de espaçamento lá agora. OK. E você pode dizer fronteira aqui. Portanto, a borda é de um pixel, sólida, e posso dizer hTd. Então, esse código de cores que eu uso para borda, você pode ver, está esmaecido, mais ou menos Ok. E eu posso dizer raio de fronteira Então, vou dar uma sensação redonda. Ok, então vou adicionar apenas cinco pixels. Portanto, as bordas serão arredondadas agora um pouco, ligeiramente arredondadas em cinco pixels. Desculpe, ligeiramente arredondado em cinco pixels aqui. Me desculpe. Ok, isso está feito. A largura, vou acrescentar. As larguras podem ser de 200 pixels aqui Ok. Então está feito para os dois, ok? Para botão. Ok, o botão parece cru agora. Então, deixe-me fazer algo para o botão aqui. Opa. Para botão, vou dizer preenchimento primeiro, preenchimento de, vou dizer dez pixels e 20 pixels. OK. Então eu posso ter argolas de cor de fundo. Portanto, isso precisa ser ponto e vírgula, cor de fundo. Ok. A cor de fundo pode ser, eu diria azul. Vou ver se isso é azul, mas as bordas parecem ruins. Ok, eu deveria dizer. Talvez eu tenha Border como freira. Veja se sim. Boda é freira Posso dizer que a cor é branca. Branco onde é branco aqui, você pode ver a conversão de branco. Você pode ter raio de borda, raio de borda, posso dizer fi pixel porque eu dei isso para os outros elementos Ok. Agora, claro, se você passar o mouse sobre isso, eu quero que isso mude, então eu posso dizer ponteiro do cursor Agora, se eu for até aqui, você pode ver cursor girando em direção ao ponteiro Ok. Isso está feito. Também posso adicionar um efeito de foco Então, botão, dois pontos, eu posso dizer *** e posso dizer cor de fundo E eu posso ter azul escuro. Então, se você passar o mouse sobre isso, verá azul escuro. Uma espécie de efeito, certo. Agora isso está feito, e podemos ter um estilo e para a exibição, que é para a tag P. Isso pode ser o tamanho da fonte. Vou apenas aumentar o tamanho da fonte para 18. Vou apenas alterá-lo para 18 e terei uma margem de, digamos, dez pixels. Se você salvar isso, você tem isso. Ok. Agora, eu ampliei um pouco. Está bem? Então, eu ampliei um pouco. Você pode ver aqui para que os alunos possam ver corretamente, mas você pode ver o resultado aqui. Ok, então está parecendo bem decente agora. Também abri o aplicativo no modo de tela cheia, para que você tenha uma visão melhor. Ok, 2.200 e você pode ver as conversões aqui, certo? Então, isso vai funcionar bem. Está bem? Parece muito decente. Você pode personalizar o CSS com base em sua necessidade. Você pode alterar a cor dependendo das suas preferências de cor. Tudo bem? Então, isso é sobre a unidade Coto usando o jaw Script Espero que tenha sido super divertido. 10. Apresentação de projetos: crie um aplicativo de lista de afazeres dinâmico com JavaScript: Tudo bem, então é hora de falarmos sobre como fazer aplicação de listas usando JAScript, HTML e Então, aqui você pode ver esse aplicativo que vamos criar, e você pode ver que há um a ser feito já adicionado às funções do Learn Ja Script. Tudo bem. Posso adicionar mais tarefas a partir desta caixa de entrada aqui. Eu posso dizer, aprenda Spring Boot, e eu posso dizer adicionar tarefa. Eu posso levar mantimentos. OK. Algo parecido com isso. E você pode adicionar as tarefas. Você pode furá-los e marcá-los como concluídos. Tudo bem, então esse é um aplicativo simples que vamos criar. Vamos fazer uso de JavaScript, HTML e CSS. Tudo bem? Animado, vamos começar imediatamente. Então, aqui estou eu no código do Visual Studio, que é o editor que vou usar. Eu também tenho esse navegador aberto na lateral com o Live Server. Eu tenho três arquivos: ponto de índice aberto, estilo HTML , ponto css e ponto de índice Gs. Agora, antes de prosseguir, certifique-se de que esses três arquivos residam na mesma pasta. Tudo bem Agora vou começar com o arquivo HTML. Primeiro, vou adicionar uma exclamação. Opa. Na verdade, estou em um arquivo JavaScript, então vou abordar o arquivo HTML. Vou adicionar uma exclamação e obterei um código padronizado Tudo bem. Então, aqui, eu posso dar o título do documento para fazer a aplicação da lista, ok? Algo parecido com isso. Tudo bem E você pode até mesmo ter uma tag E H aqui como título. Está bem? Então eu posso dizer H um. E você pode pedir para listar aqui. Ok, algo assim. Tudo bem Agora, vamos precisar de duas coisas aqui. Um é entrada e outro é ePaton, ok? Então, primeiro criarei um div e terei uma entrada aqui como esta Vou chamar isso de opa, desculpe, digite como texto aqui. OK. ID é o ID da entrada da tarefa. Preciso atribuir seu ID porque vou me referir a esse elemento diretamente do script Ja para que eu possa obter o que o usuário realmente inseriu aqui. Eu vou dizer insira sua tarefa, algo assim. Tudo bem Agora, na próxima linha após a entrada, vou ter um botão aqui, certo? Então, o botão dirá ID, e eu chamarei isso de adicionar tarefa aqui, algo assim. E então isso será adicionar tarefa, algo como Ok. Isso está feito, e então eu acho que estamos todos bem aqui. OK. Deixe-me ver. Não estamos vendo nenhum tipo de saída aqui. Então eu vejo a saída agora após a atualização, tudo bem. E sim, então essa é a entrada e o botão, vamos manter o HTML muito simples. Ok, eu tenho um botão de entrada e vou criar uma lista não ordenada aqui, que será usada para renderizar a lista de tarefas. OK. Então, vou chamar isso de lista de tarefas, algo assim. Está bem? Aqui, script sob a tag script, vou ter SRC, e vou chamá-lo porque vou vinculá-lo ao Índice Gs aqui E no topo, eu posso ter uma folha de estilo aqui, então eu posso dizer link, RL, eu vou dizer folha de estilo OK. E eu vou fechar isso. Também mencionarei a tag F e direi estilos de pontos CSS. Até agora, tudo bem. Ok, então o HTML está pronto. Nós mantivemos tudo muito, muito simples. Você pode ver, este é o contêiner aqui, que contém o tipo de entrada e o botão. Está bem? Posso atribuir a isso um ID aqui para que possamos usá-lo posteriormente para estilizar Posso dizer contêiner de tarefas aqui. OK. Então, esse é o conteúdo da tarefa aqui, onde eu tenho a entrada e o botão É aqui que toda a ação acontece. E então eu tenho uma lista não ordenada onde estou exibindo a lista de itens ou a lista de tarefas Isso está feito. Agora vou passar para o Index GS. Está bem? Este é um arquivo JavaScript qual escreveremos um código que nos ajudará a dar vida a esse HTML. Ok, então isso literalmente não faz nada a partir de agora, certo? Então, a primeira coisa que precisaremos é uma maneira de armazenar e gerenciar nossa lista de tarefas, certo? E também precisaremos de uma maneira, essencialmente, de ouvir esse evento. Portanto, sempre que o usuário clica em uma tarefa, precisamos garantir que a tarefa seja adicionada ao aplicativo Depois que a tarefa for adicionada ao aplicativo, também teremos que renderizá-la. OK. Então, coisas como renderização, adição de tarefas, ok, marcar a tarefa como concluída, tudo isso será gerenciado dentro do próprio aplicativo Então, o que faremos é ter um objeto, ok? Então, vou começar criando um objeto. Vou dizer para fazer o aplicativo aqui. Ok. E é assim que eu vou criá-lo. Agora, aqui, eu vou ter uma matriz, porque o aplicativo pode ter várias tarefas, certo? Então, eu vou ter uma matriz, que será usada para armazenar tarefas aqui. Agora, vou ter alguns métodos aqui. Um está na tarefa, ok? Então esse é o primeiro método aqui. OK. Então eu vou ter outro método, que é alternar tarefa Isso será usado para alternar. Então, se você disser que esta tarefa está concluída, se você clicar na tarefa, ela será marcada como concluída. Se você clicar novamente, clique nele, ele será marcado como não dez. Está bem? Então, é basicamente alternar aqui E aqui, essa função ou esse método aceitará o índice aqui. Isso está feito. Vou ter que remover as tarefas concluídas, ok? Então, isso também é o que podemos ter , então, posso dizer que remova as tarefas concluídas. OK. E, uh, eu vou comer isso. OK. Então isso vai nos ajudar a remover as tarefas concluídas, ok? E eu vou ter um método para renderizar tarefas aqui Está bem? Então eu vou dizer tarefas de renderização, algo assim, e aqui, é assim que vai ser. Tudo bem Então isso está feito. Está bem? É assim que o objeto será. Esse objeto terá o atributo tarefa para armazenar tarefas e todos os métodos basicamente para gerenciar tarefas, certo? Agora, o que eu vou fazer é dizer documento aqui, pensei Opa, documente tudo pensei Opa, documente Vou dizer get element by ID aqui, e vou dizer at task aqui. O que está em jogo? Na tarefa está o botão aqui. Está bem? Você pode ver que isso é um botão. Então, estamos pegando o botão, e no botão, eu vou dizer “ clique aqui”. OK. Vou usar as funções de seta, assim. E aqui, eu vou ter a lógica do que deve acontecer quando um usuário clica na tarefa aqui Ok, no botão, quero dizer, ok? Então, aqui, em primeiro lugar, posso exibir um alerta. Posso apenas testar se esse ouvinte está funcionando bem. Deveria. Então, se eu disser adicione, OK, não está sendo exibido, é porque isso é maiúsculo. Me desculpe por isso. OK. Então aqui você pode ver, oi. Ok, está funcionando bem. Então, isso está sendo acionado com o clique do botão. Até agora, tudo bem. Agora, quais são as tarefas que precisamos fazer com esse ouvinte Em primeiro lugar, precisamos obter o que está inserido nessa tarefa. Como vamos conseguir isso? Obteremos isso a partir dessa entrada. Temos essa entrada de tarefa de identificação, certo? Então, quando tivermos o texto inserido aqui, chamaremos a tarefa e adicionaremos essa tarefa à matriz de tarefas, certo? E então vamos redefinir essa caixa de entrada para uma string vazia porque ela está limpa porque a tarefa foi adicionada, certo? Então, o que vou fazer é deixar a entrada da tarefa aqui. Ok, eu vou dizer ponto do documento, obter elemento por ID. E deixe-me ver a entrada da tarefa aqui. Está bem? Então, vou dizer entrada de tarefas. Certifique-se de ter essa referência de ID. Essa referência de ID deve ser a mesma que você definiu aqui no HTML. Tudo bem Então isso está feito. Isso é cuidar aqui. Ok. Agora, o que eu preciso fazer aqui é, ok, isso está feito. Eu virei até aqui. Vou dizer para fazer o aplicativo ponto na tarefa, e vou dizer entrada da tarefa, ponto, valor. OK. Então, o que estou fazendo é dizer entrada de tarefas. Então esse é o elemento que eu obtive, e eu estou dizendo o valor do ponto. Sim. OK. E então eu preciso redefinir isso aqui, esse campo aqui, certo? Então, vou adicionar uma string vazia, algo assim. Isso vai limpar o campo de entrada, certo? Então, posso dizer teste na tarefa. Você pode ver que está sendo apagado, mas não está sendo adicionado no momento Por quê? Porque essa função ou esse método não tem literalmente nada. É um método vazio. Está bem? definir tudo isso. Ainda não definimos tudo isso. Tudo bem. Então, agora o que vou fazer é começar com o tratamento do ift aqui OK. Se houver uma tarefa, ou eu posso, se você quiser validar, você pode adicionar uma verificação aqui na qual você verifica se a tarefa Ou o que você pode fazer é dizer imediatamente essa tarefa pontual, desculpe, essa tarefa pontual empurre Então, precisamos empurrar ou adicionar essa tarefa específica a essa tarefa aqui. Está bem? E aqui, eu vou dizer uma mensagem de texto, Colin Ok, então essa é a tarefa, e eu direi concluída Está concluído? Eu vou dizer que cai. Está bem? Algo parecido com isso. OK. E uma vez feito isso, preciso chamar render. Então, essa renderização de pontos. Algo parecido com isso. a interface do usuário precisar ser atualizada, certo? Depois que a tarefa for adicionada, a lista da tarefa deve ser atualizada, e é por isso que estou chamando essa renderização de pontos aqui. Ok, isso está feito. Então, basicamente, pergunte se cada tarefa individual nesta matriz tem duas coisas. Uma é a tarefa em si e se a tarefa está marcada como concluída ou não. Até agora, tudo bem. Agora precisamos alternar as Está bem? Então, o que faremos é dizer essas tarefas pontuais. Vou pegar a tarefa do índice aqui porque temos acesso ao índice. Eu direi que o ponto foi concluído. Ok. Então, isso será o inverso de estar concluído ou não. Vou dizer isso como tarefas de ponto, e vou dizer índice aqui, valor de ponto concluído. Estou apenas invertendo esse valor aqui. Portanto, qualquer que seja o valor armazenado no atributo concluído dessa tarefa específica, é revertido e atribuído novamente. Isso é o que está acontecendo. É isso mesmo. Agora, depois de fazer essa alteração, preciso renderizar a interface, certo? Então, renderize a interface do usuário aqui. Eu vou dizer essas tarefas de renderização de pontos. Algo parecido com isso. Isso está feito. Preciso remover as tarefas concluídas. Ok. Então, o que eu faria é dizer, para que possamos usar o filtro aqui, certo? Então você pode dizer isso para tarefas aqui. Está bem? E você pode dizer isso pontuar tarefas, filtrar aqui, e eu vou dizer tarefa aqui, usar a função de seta, e eu direi se a tarefa foi concluída. Algo parecido com isso. OK. Então, qualquer tarefa concluída será removida e eu direi essas tarefas de renderização de pontos, algo assim Ok. Agora, como você renderizaria a tarefa, certo? Então, para isso, o que faremos é renderizar a tarefa aqui na lista de tarefas, certo? Então, o que eu faria é simplesmente copiar isso para economizar tempo. OK. E aqui, vou dizer lista de tarefas. OK. E o ID aqui é a lista de tarefas, certo? Então, vou adicionar uma lista de tarefas aqui. OK. A lista de tarefas foi adicionada. Agora, o que precisamos fazer é OK. Então, aqui, vou realmente limpar a lista atual. Está bem? Primeiro, primeiro, precisamos limpar a lista atual. Vou te dizer por que estou fazendo isso, ok? Ficará claro para você em pouco tempo. O HTML é igual. Então, estou limpando a lista atual primeiro porque estamos renderizando a tarefa novamente, certo? Então, se você não limpar o HTML interno, se você não limpar a lista de tarefas atual, a lista será duplicada, certo? Espero que isso faça sentido. Agora, o que precisamos fazer é dizer que esse ponto faz isso para cada um aqui. OK. E dentro disso, eu vou ter uma função, e eu vou dizer índice de tarefas. Portanto, a tarefa e o índice aqui são algo que será aprovado. OK. E eu vou ter a função de seta. OK. E dentro disso, vou dizer const Li Okay. E eu vou dizer que o ponto do documento obtém o elemento por ID. Desculpe, não receberei o elemento por ID porque não criamos a LI. Então, dentro da UL, você terá elementos LI, certo? Então, eu vou dizer criar elemento aqui. Eu vou dizer que crie Li aqui. Ok, porque você deseja renderizá-lo como uma lista. E então eu vou dizer conteúdo de texto Litt. E então eu vou dizer o texto do ponto da tarefa aqui. OK. E então eu vou dizer que eu ponto, clique aqui. Ok, também precisamos adicionar um clique à lista aqui porque, ao clicar nisso, a captura de tarefas alterna, então eu vou dizer essa tarefa de alternância de pontos, e vou passar o índice do Isso está feito. OK. Agora, direi que se a tarefa for concluída, estaremos aqui. Ok. Em seguida, você pode adicionar a lista de classes I'll i dot. Então, estou adicionando a classe aqui. Ok, não adicione. Eu direi concluído. Estou adicionando uma classe a esse elemento HTML se a tarefa estiver marcada como concluída. Está bem? Então, aqui você está adicionando uma classe como classe ID aqui para CSS. Isso é o que estou adicionando aqui do Javascript. Então você pode dizer lista de classes de pontos do elemento. Você está adicionando isso à lista de turmas, concluído. E então podemos usar CSS contra isso. Isso está fazendo sentido. E então aqui, você pode dizer lista de tarefas aqui, carregada e criança Algo parecido com isso. Vou acrescentar isso à interface do usuário. OK. Vamos testar isso. Eu vou dizer teste. Você pode ver que o teste está sendo renderizado em 100. Isso também está sendo renderizado. OK. Então, isso está sendo renderizado duas vezes aqui. Aí está, isso foi renderizado duas vezes. Então, há um problema. Está bem? Portanto, o problema é que o HTML não está sendo esclarecido aqui Está bem? Então, espero que você entenda a importância dessa declaração aqui agora. Na verdade, isso não está funcionando. E você pode ver a lista inteira está sendo renderizada novamente. Então, se eu adicionar 200 aqui, você pode ver o teste, 100, 200. Está renderizando tudo novamente. Ok, sempre que você estiver adicionando a tarefa. Portanto, não será isso.in HTML. Serão tarefas com pontos HTML. Se eu salvar isso, posso dizer teste. É um teste adicionado. Se eu ver 100, ele adicionará 100. Você pode ver que está funcionando bem agora. Tudo bem Agora, as tarefas também estão sendo marcadas como concluídas, mas você terá que lidar com a conclusão em CSS porque há uma classe que está sendo adicionada, então aqui. Se você der uma olhada na aula, ok, deixe-me te mostrar. Então aqui você está vendo o Li aqui. É 100, certo? Na verdade, clique nesses 100. OK. A classe ainda não está sendo adicionada aqui. Está bem? Ele deve ser adicionado. Então, na verdade, ao clicar aqui, complete deve ser adicionado dinamicamente como um nome de classe aqui Mas isso não está acontecendo. Vamos ver qual é o problema. clicar, vemos que alternar tarefas e, para cada tarefa concluída, e, para cada tarefa concluída a lista de classes deve ser Está tudo bem. Ok, aqui, eu vejo que isso é maiúsculo C. Isso não está certo. Isso deve ser pequeno. Ok. Agora vamos ver o que acontece. Então aqui não há nenhuma tarefa aqui. Deixe-me adicionar uma tarefa. Vou adicionar o teste. OK. Eu tenho uma tarefa. Se eu clicar nele, você pode ver que a aula foi concluída para isso. Você pode ver. Agora, se você adicionar qualquer CSS para a classe concluída, poderá adicionar o CSS de strike through. Portanto, aparecerá como um rascunho, porque você aplicou esse CSS. Você só precisa dizer classe para elementos, concluindo a classe. Ok, você precisa adicionar esse tipo de efeito completo no CSS. Tudo bem, então será gerenciado. Está bem? Então a inscrição está quase pronta, ok? Terminamos o aplicativo. Você pode ver que tudo está sendo feito. Toda a funcionalidade está funcionando bem. OK. Agora vamos passar para o CSS e adicionar alguns estilos básicos ao nosso aplicativo Tudo bem Agora vamos começar com a etiqueta corporal aqui. Está bem? Claro, família de fontes, e veremos Ariel Helveta, Albatica Se estiver tudo bem, ok, texto ou linha. Eu vou dizer Cena aqui. Vou adicionar Opa, não a resolução máxima, mas a margem aqui Eu vou dizer zero. OK. E deixe-me adicionar preenchimento. Eu vou dizer 20 pixels. OK. Deixe-me ver o que acontece. Ok, um pouco de mudança. Ah, você pode adicionar a cor de fundo ou o que quiser. Vou acrescentar que é azul. OK. Parece um pouco azulado. Se você quiser outra coisa , por exemplo, aqui. Veja. Branco tão antigo. Você também pode adicionar isso. Ok. Dependendo da sua escolha, o que você quiser. Ou a tela, vou manter a tela flexionada aqui. OK. A direção flexível é, digamos, coluna OK. E depois alinhe os itens, direi ao centro. Vou guardar isso. OK. Isso está feito. Cada um. OK. Então, a cada um, vou atribuir explicitamente uma cor Vou chamar essa cor de preto. OK. Isso está feito. Tudo bem. Agora, vamos até aqui. Vou ver isso. Se você vier aqui, há esse contêiner de tarefas. Vou pegar esse ID do contêiner de tarefas aqui. OK. Eu vou dizer haxixe É assim que você se refere a qualquer ID de elemento em CSS com a ajuda do hash OK. Vou dizer display flex, e precisamos acrescentar que precisamos justificar o conteúdo. Eu vou dizer centro. OK. Então isso agora vem em uma única linha, como você pode ver aqui. E eu vou dizer margem inferior. OK. E isso será de 15 pixels. OK. Então, na verdade, isso não é uma exibição em tela cheia, mas se você for até a visualização em tela cheia aqui, se eu atualizar, você verá que é assim que está aparecendo agora, e eu posso simplesmente adicionar uma tarefa Você pode ver. Está bem? Então, sim, é assim que está agora, margem inferior. Ok, isso está feito agora. Posso adicionar um pouco de estilo para entrada aqui. OK. Eu direi que o tipo de texto é igual ao texto, algo assim, e vou dizer aqui , preenchendo dez pixels Veja se isso está bem. Eu vou dizer que a largura aqui é de 200 pixels. OK. Eu vou dizer fronteira. Ok, a borda pode ser de um pixel. Ok, não há fronteira agora, você pode ver. OK. Agora, mais uma coisa é que acho que eu também deveria otimizá-lo para um tamanho de tela menor. OK. O que vou fazer é adicionar media query aqui, media and say aqui. Portanto, será a largura máxima. Ok, algo assim, e terá uma largura máxima de 600 pixels. OK. Então, vou adicionar um pouco de estilo aqui para o mesmo, certo? Então, posso dizer hashtag task container. OK. Eu vou dizer direção flexível. Vou dizer coluna aqui para que fique alinhada verticalmente quando basicamente o tamanho da tela for menor Então, a caixa de entrada do botão está alinhada verticalmente porque não estava com boa aparência, então, horizontalmente, basicamente vista lado a lado Então eu acabei de adicionar isso. Portanto, está alinhado horizontalmente aqui, desculpe, alinhado verticalmente quando o tamanho da tela é pequeno, mas horizontalmente assim se o tamanho mas horizontalmente assim Está bem? Portanto, quando o tamanho da tela é pequeno, esse CSS é aplicável. Está bem? Eu posso até adicionar CSS para isso aqui. OK. Então, vou inserir a largura do texto do tipo preenchimento que eu não preciso Vou pular o preenchimento. A largura é 100% aqui. Margem aqui. Então, eu vou dizer que a margem é cinco pixels e zero. Uh, assim. E eu posso dizer UL. Portanto, a lista não ordenada pode ter largura de 90%. Algo parecido com isso. OK. Então isso está feito. Está bem? Isso é para telas pequenas. Eu vou voltar aqui. OK. Então eu estava dizendo pó de um pixel. OK. Eu vou dizer sólido aqui, e eu vou ter essa borda aqui. Isso parece bom, agora, você pode ver. Está parecendo bom. Está bem? Precisamos adicionar mais algumas coisas, como raio. Ok, raio de cinco pixels, por exemplo. Ok, cinco pixels parecem decentes na minha opinião se você salvar isso, certo? E vou adicionar margem, então margem aqui, margem de, digamos, dez pixels. OK. Isso está feito, eu acho. Tudo bem A entrada está concluída. Agora vamos estilizar o botão aqui. Então, como estilizamos o botão. OK. Então, botão, podemos dizer, uh, preenchimento, vou dizer dez pixels e 15 pixels aqui e cor de fundo azul OK. E depois a cor branca. Se você salvar isso, você pode ver. Mas o corpo não está com boa aparência, então a borda não desativará nenhuma. Ok, a fronteira desapareceu. Eu posso ter um raio de fronteira aqui. Ok, F pixel, assim. E então eu posso ter o ponteiro do cursor. Então, no momento, não está se transformando em um ponteiro. Mas se você passar o mouse agora para ver, esse cursor está se tornando um ponteiro OK. E eu posso até adicionar o efeito Colin hov do botão Ok, então eu vou dizer cor de fundo. É azul escuro. Está bem? Então, se você passar o mouse, ele virá em azul escuro Simples. Agora, vou adicionar um pouco de estilo para a lista permanente. Vou copiar isso. OK. E aqui, teremos uma largura de 50%, e eu direi o tipo de estilo de lista como nenhum aqui. Ok, então eu não quero que esses pontos apareçam. Então, vou dizer tipo de estilo de lista, nenhum. Isso não parece bom. Eu direi que o preenchimento é zero OK. O ajuste é de 50% e a margem é zero. Automático. Ok, isso está feito. E sim, acho que é isso. Só precisamos adicionar um CSS para concluir. OK. Então, eu vou dizer concluído. Item aqui. Vou adicionar essa tarefa e clicar nela para que seja marcada como concluída. Tudo bem, então eu vou dizer concluído. OK. Então, estou me referindo a uma aula concluída como este ponto concluído. É assim que você se refere. Eu vou dizer decoração de texto, então eu preciso raspar, certo? Então, eu vou dizer aqui, fileira. Esse é o nome da propriedade. Ok, então ambos são eliminados, acho que ambos estão marcados como concluídos. Então eu vou dizer teste. Ok, isso não está concluído, e posso dizer concluí-lo. Tarefa ok. Essas são algumas tarefas fictícias que estou adicionando. Se eu clicar aqui, você verá que está concluído. Está bem? Se eu marcar isso como concluído, você verá que está concluído. Está bem? Então, isso está funcionando bem. Decoração de texto concluída. Eu vou dizer cor como cinza. Ok, algo assim, isso deve parecer decente, sim. Ok. Acho que está tudo bem agora, certo? Eu posso adicionar mais. Ok, então a tarefa está sendo adicionada. OK. Você pode ver. Também podemos adicionar um estilo para cada tarefa aqui. Ok. Então, o que eu posso fazer aqui é depois da UL aqui, eu posso adicionar LI. OK. Eu posso ver que o estilo de cada tarefa pode ser preenchido com dez pixels Ok. Eu posso adicionar uma borda aqui, borda de um pixel, sólida, e eu poderia chamar isso de fumaça branca. Você pode ver. Ok, isso realmente não parece muito bom. Então eu tenho um código de cores, TTT. Vou acrescentar isso. Está bem? Mas isso não fica bem no fundo, se você der uma olhada, ok? Então, o que eu posso fazer é rolar até aqui e mudar esse plano de fundo para hash. Posso dizer quatro, quatro, quatro, algo assim Está bem? Tipo de cor branca azulada Isso parece decente agora. OK. Então, aqui, eu preciso adicionar o raio. Não parece muito quadrado para mim, muito quadrado, certo? Então, o que eu posso fazer é adicionar um raio de provavelmente cinco pixels Vamos ver. OK. Raio de cinco pixels. Guarde isso. Ok. E então eu posso dizer margem aqui. Cinco pixels e zero aqui. Isso parece decente agora. Você pode ver. Além disso, se eu passar o mouse sobre isso, o ideal é ter o ponteiro do cursor Eu vou dizer I Cursor. Ponteiro. Você pode ver um ponteiro chegando, certo? Então, está ótimo agora. Está bem? Pelo menos decente, eu diria. Ok. Vou apenas atualizar isso e você também pode adicionar a tarefa padrão aqui, se desejar Então, aqui em JavaScript, o que eu posso fazer é adicionar, posso chamar o método. Ok, então eu posso dizer todo app dot at task aqui. A tarefa padrão é aprender JavaScript. Algo parecido com isso. OK. Você pode ver. Então, está adicionado agora. Sempre que você carrega o aplicativo, essa seria a tarefa padrão adicionada. Está bem? E você pode adicionar tarefas ou aprender C shop, por exemplo, aprender Java. Ok, você pode marcá-los como completos. Então, espero que isso seja útil e espero que você tenha gostado de criar esse aplicativo Studo comigo usando, é claro, Ja Script, HTML e CSS 11. Conclusão do curso: E isso nos leva ao final deste curso incrível, no qual exploramos possibilidades infinitas com as funções do Jascript Ao longo deste curso, nos aprofundamos no cerne das funções de JavaScript, onde exploramos todas as funções desde o básico até tópicos mais avançados, como parâmetros, valores de retorno, expressões de funções e funções de seta Até nos aventuramos no mundo das funções dentro de métodos de objetos e matrizes, garantindo que você tenha uma compreensão abrangente de como escrever código modular e eficiente Mas nossa jornada não parou por aí. Também fizemos alguns projetos práticos em que aplicamos todo o conhecimento ou tudo o que adquirimos neste curso . E esses projetos não apenas reforçaram seu aprendizado, mas também equiparam com conhecimento prático e compreensão. E esses projetos são projetos que você pode até mesmo usá-los em seu portfólio. Lembre-se de que o domínio de qualquer habilidade de programação é apenas o começo O verdadeiro poder do JavaScript está na experimentação e prática contínuas Eu encorajo você a continuar criando, refinando seu código e fazendo uso das coisas que você aprendeu hoje nos projetos que você cria Obrigado por ser um aluno engajado e entusiasmado durante todo o curso Espero que você tenha adquirido confiança suficiente em suas habilidades de roteiro de trabalho e esteja animado para enfrentar projetos ainda mais desafiadores no futuro. Com esta aula, você tem um projeto de classe que encontrará na seção de projetos, que eu o encorajaria a concluir e compartilhá-lo com toda a turma. Então esse é o fim de nossa jornada juntos, boa programação e tudo de bom