Тёмный

Como isso? Closure? Série - POO para JS 

DevPleno
Подписаться 58 тыс.
Просмотров 9 тыс.
50% 1

Neste vídeo, continuamos a nossa série POO para JS, onde mostro como fazer essa transição da Programação Orientada-objetos para JavaScript mais funcional.
Cadastre-se para receber as novidades: www.devpleno.c...
Curta o DevPleno no Facebook: / devpleno ---
Conheça nossos cursos premium:
devRactJS - Crie aplicações web e mobile profissionais com ReactJS sem programar nada no servidor em apenas 45 dias: www.devpleno.c...
Fullstack Master -
Torne-se um desenvolvedor fullstack em apenas 3 meses (independente da sua experiência atual): www.devpleno.c...

Опубликовано:

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 25   
@robsonrobertodocarmo5515
@robsonrobertodocarmo5515 Год назад
fala ai meu amigo boa tarde pode me tirar uma duvida? function func1(name){ const saudacao = "olá " + name; function func1b(){ console.log(saudacao) } return func1b } const chamarrobson = func1("Robson Roberto") chamarrobson() resultado> olá Robson Roberto eu não entendi uma coisa se o func1b está retornando com o return da func1 como ele é usada para chamar a function func1b? é como se estivesse chamando chamarrobson() 2 vezes uma para retornar o func1b e outra para utilizar ele
@Motocicleiros
@Motocicleiros 4 года назад
Embora eu já tivesse compreendido completamente o conceito ainda estava tendo dificuldade em visualizar a aplicação prática do closure. No entanto após assistir a esse vídeo em particular a coisa ficou um pouco mais clara pra mim. Se eu compreendi corretamente essa técnica permite converter uma função em um componente que pode ser reutilizado sem a necessidade de reinstanciação. Após a função ser executada (uma única vez) e ser finalizada, embora o contexto de execução da mesma seja retirado da memória o escopo contendo o código e os valores continuam disponíveis em uma espécie de "mini-contexto" que ficará armazenado na variável global que a recebeu. O exemplo do timer foi muito interessante pois demonstra claramente o mesmo "componente" sendo executado duas vezes cada uma realizando uma tarefa distinta de forma assíncrona. Se fôssemos fazer isso da forma convencional teríamos que criar na mão dois timers e lidar com variáveis separadas. E se fossem 10 timers? Ou 100? Enfim, utilizando essa técnica basta criar o "componente" uma única vez e simplesmente chamá-lo quantas vezes for necessário já que cada um têm vida independente. Muito obrigado pelo vídeo e pela ótima explicação!
@marcelonicastro
@marcelonicastro 3 года назад
Estou aprendendo JavaScript e tive um problema com o DOM, quando utilizo um loop em um array grande, não consigo iterar com o DOM dinamicamente, só quando acaba o loop ele mostra o resultado, como resolver esse tipo de problema, tenho que utilizar o setInterval() ?
@rafaelkrueger8460
@rafaelkrueger8460 4 года назад
Closure é basicamente uma função dentro de uma função?
@RafaelSFTech
@RafaelSFTech 5 лет назад
O nome dado a esse acesso de variável dentro de uma função filha é chamado de Lexical Scope
@tdias25
@tdias25 5 лет назад
Não necessariamente, Lexical Scope é o "tipo" de escopo que o engine do javascript usa na hora de fazer a leitura das variáveis funções etc. Ele é definido como o lugar que as variáveis/funções foram escritas originalmente, contrário ao funcionamento do escopo dinâmico
@tdias25
@tdias25 5 лет назад
Eu tenho visto muitos vídeos a respeito de closures e ainda ficam umas dúvidas rs, no meu entendimento, a grosso modo, ele é meio que uma "classe" e você pode usar diversas vezes como objeto?
@abelsouzacostajunior2013
@abelsouzacostajunior2013 5 лет назад
Na minha visão uma closure não se encaixaria muito bem no papel formal de uma classe, porque ela não possui atributos nem mesmo métodos, o que a closure faz não é bem isso. Funções, que são um ponto considerável na abordagem dos closures, em Javascript são tratadas como objetos de primeira classe (first class objects), por isso podem ser retornados por outras funções e passados por parâmetro para outras funções. Um outro ponto considerável se trata do escopo, variáveis dentro do Js possuem em us agrande maioria escopo de bloco ou escopo de função (let e var), com a grande maioria ocupando o escopo de função, dentro de uma delimitação de escopo o código mais interno possui acesso ao código mais externo, assim sendo uma função "filha" possuiria acesso ao escopo da função pai. Considere o seguinte código: const makeAdder = function(x) { return function add(y) { return x + y; }; }; const logger = function(content) { console.log(content); }; const plusTen = makeAdder(10); const plusTwo = makeAdder(2); const plusThree = makeAdder(15); const lessTen = makeAdder(-10); logger(plusTen(120)); //130 logger(plusTwo(12)); //14 logger(plusThree(9)); //12 logger(lessTen(5)); //-5 Quando chamamos a função makeAdder(10) temos um retorno para a referência da função add que vai ter como x = 10, essa referência é armazenada na constante plusTen. O mesmo acontece quando chamamos a função makeAdder(2), que vai ter como x = 2 essa referência é guardada na variável plusTwo. Depois quando chamamos plusTen(120) ele adiciona 120 (o seu y interno[lembre-se o que está armazenado na constante plusTen é a função add guardando o x = 10]) com o 10 (lembrado por x) e temos como resultado 130. Um closure é uma forma de guardar (enclausurar) o escopo de uma função o deixando guardado dentro de um container, que no caso seria a função retornada pela função principal, para que essa possa ser utilizada mais tarde. Talvez com esse código talvez as coisas vão ficar mais claras: const twoNumbersGiven = function(first) { return function giveNUmber(second) { return `The first number given was ${first} and the second number given was ${second}`; }; }; const logger = function(content) { console.log(content); }; let giveSecondToTen = twoNumbersGiven(10); //dar um segundo número para o 10 let giveSecondToThree = twoNumbersGiven(3); //dar um segundo número para o 3 logger(giveSecondToTen(12)); //segundo número fornecido foi 12 logger(giveSecondToThree(5)); //segundo número fornecido foi 5 Basicamente a função mais interna vai apenas lembrar, utilizar valores passados, para a função mais externa. Ao invés de pensar os Closures como classes seria mais interessante pensar nelas como funções fábrica, remontando o Factory Pattern, sua função portanto seria fabricar uma outra função com base em um determinado valor passado para ela a priori. Mas aquilo, não sou nenhum monstro da programação, então posso tá completamente errado.
@tdias25
@tdias25 5 лет назад
@@abelsouzacostajunior2013 Esse exemplo foi do livro "You Dont Know Js" né? também estou aprendendo por ele rs, vou ler o capítulo maior sobre closures, mas acho que já entendo um pouco melhor hoje
@abelsouzacostajunior2013
@abelsouzacostajunior2013 5 лет назад
@@tdias25 Sim, sim. Mas eu entendi melhor com esse artigo: medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8
@tdias25
@tdias25 5 лет назад
@@abelsouzacostajunior2013 Eu comecei a ler esse um tempo e esqueci de ver todo, mas é muito bom também. obrigado!
@JoaoVictor-rj4dp
@JoaoVictor-rj4dp 4 года назад
Parabéns DevPleno, já trabalho com javasCript a um bom tempo, mas é sempre bom obter mais conhecimento mesmo que pareça que eu já saiba, mas uma coisa que sei é que nada sei, sempre bom assistir seus vídeos, abraço.
@DevPleno
@DevPleno 4 года назад
Estamos juntos :)
@hudsonfranca6813
@hudsonfranca6813 5 лет назад
Entendi nada.
@DevPleno
@DevPleno 5 лет назад
Assiste novamente :)
@castrojunin
@castrojunin 3 года назад
Quando vc chama a função é como se vc criasse uma "Nova instância", correto?
@karlbass7004
@karlbass7004 6 лет назад
Obrigado pelas licoes e parabens pelo excelente canal !!!!
@DevPleno
@DevPleno 6 лет назад
Muito obrigado pelas palavras, Carlos! Abraço :)
@fabiobarboza7
@fabiobarboza7 5 лет назад
Muito boa a aula mas foquei no "tá então".
@dragondiego7
@dragondiego7 4 года назад
Cara muito bom teu vídeo e a didática, sensacional. Um novo inscrito realmente admirado com seu trabalho.
@DevPleno
@DevPleno 4 года назад
Muito obrigado pelas palavras Diego :)
@minhasavos
@minhasavos 6 лет назад
Olá, estou aproveitando seus vídeos nas férias da faculdade para ter maior conhecimento, tem como criar uma 'aplicação' que acessa o chromecast através do javascript puro do lado cliente ?
@DevPleno
@DevPleno 6 лет назад
Olá Tecladista, começamos a publicar algo neste sentido ;)
@gabrielnastari8513
@gabrielnastari8513 4 года назад
Resumindo, é uma função normal
@DevPleno
@DevPleno 4 года назад
Não, pois as variáveis internas da funções continuam existindo mesmo depois do término da execução da função.
Далее
Mono ou multi thread? POO para JS
21:34
Просмотров 6 тыс.
▼ КАПИТАН НАШЁЛ НЕФТЬ В 🍑
33:40
Просмотров 473 тыс.
27 - Closures - #JavaScript #Avançado #ES6
19:03
Просмотров 1,3 тыс.
Javascript Closure Tutorial | Closures Explained
17:58
Просмотров 148 тыс.
OO, Imperativo e Funcional
11:39
Просмотров 11 тыс.
Learn Closures In 7 Minutes
6:56
Просмотров 331 тыс.
JavaScript Closures Tutorial (Explained in depth)
19:03
Hoisting, var, let, const e function em Javascript
10:48