{"id":9832,"date":"2016-08-08T18:40:57","date_gmt":"2016-08-08T21:40:57","guid":{"rendered":"http:\/\/www.impacta.com.br\/blog\/?p=9832"},"modified":"2016-08-08T18:40:57","modified_gmt":"2016-08-08T21:40:57","slug":"como-funcionam-as-closures-em-javascript","status":"publish","type":"post","link":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/","title":{"rendered":"Como funcionam as Closures em JavaScript?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">As\u00a0<em>closures em <strong>JavaScript<\/strong><\/em>\u00a0permitem que programadores escrevam melhor, de modo mais conciso e expressivo. Mas voc\u00ea sabe o que, de fato, elas s\u00e3o? Ter um conhecimento sobre closures e como utiliza-las \u00e9 um passo importante para compreender mais ainda a linguagem de programa\u00e7\u00e3o JavaScript.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Uma closure \u00e9 uma fun\u00e7\u00e3o interna que possui acesso a (refer\u00eancia) vari\u00e1veis independentes da fun\u00e7\u00e3o externa. Em outras palavras, a fun\u00e7\u00e3o definida na closure se lembra do ambiente na qual foi criada.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Ap\u00f3s ler a defini\u00e7\u00e3o acima pode ter parecido um pouco complicado o que, de fato, elas s\u00e3o. Mas a partir de agora vamos apresentar alguns exemplos que v\u00e3o deixar mais claro o seu funcionamento.<\/span><\/p>\n<h2 style=\"text-align: left;\"><span style=\"font-size: 14pt;\"><strong>\u00a0 \u00a0Escopo L\u00e9xico<\/strong><\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Antes de exemplificar o funcionamento das closures em JavaScript, \u00e9 preciso entender que o c\u00f3digo escrito na linguagem segue um padr\u00e3o l\u00e9xico (isso mesmo, uma estrutura lingu\u00edstica). O escopo l\u00e9xico de uma fun\u00e7\u00e3o \u00e9 definido como sua posi\u00e7\u00e3o f\u00edsica na estrutura do c\u00f3digo fonte. Veja o exemplo abaixo:<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">var x = \u201cglobal\u201d<\/span><br \/>\n<span style=\"font-size: 14pt;\"> function iniciar() {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var nome = &#8220;Impacta&#8221;; \/\/ nome da vari\u00e1vel criada dentro da fun\u00e7\u00e3o iniciar<\/span><br \/>\n<span style=\"font-size: 14pt;\"> function mostraNome() { \/\/ mostraNome() \u00e9 uma fun\u00e7\u00e3o interna.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> alert(nome); \/\/ utiliza-se aqui a vari\u00e1vel criada na fun\u00e7\u00e3o parente.<\/span><br \/>\n<span style=\"font-size: 14pt;\"> }<\/span><br \/>\n<span style=\"font-size: 14pt;\"> mostraNome();<\/span><br \/>\n<span style=\"font-size: 14pt;\"> }<\/span><br \/>\n<span style=\"font-size: 14pt;\"> iniciar();<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">No exemplo acima, a fun\u00e7\u00e3o mostraNome() \u00e9 uma fun\u00e7\u00e3o interna que est\u00e1 est\u00e1 fisicamente englobada pela fun\u00e7\u00e3o iniciar(), logo, somente pode ser acessada no corpo desta. mostraNome() tamb\u00e9m n\u00e3o possui vari\u00e1veis pr\u00f3prias, mas consegue acessar a vari\u00e1vel nome j\u00e1 definida em sua fun\u00e7\u00e3o pai. J\u00e1 a fun\u00e7\u00e3o iniciar(), por sua vez, est\u00e1 envolvida pelo contexto global.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Nesse sentido, o escopo l\u00e9xico de qualquer fun\u00e7\u00e3o \u00e9 definido pela estrutura l\u00e9xico-hierarquica de seus ancestrais. No exemplo acima, o escopo l\u00e9xico da fun\u00e7\u00e3o mostraNome() \u00e9 composto pela fun\u00e7\u00e3o iniciar() e o objeto global (vari\u00e1vel x).<\/span><\/p>\n<h3 style=\"text-align: left;\"><span style=\"font-size: 14pt;\"><strong>\u00a0 \u00a0Closures<\/strong><\/span><\/h3>\n<p><span style=\"font-size: 14pt;\">Agora que ficou claro o que \u00e9 o escopo l\u00e9xico, vamos ao seguinte exemplo:<\/span><br \/>\n<span style=\"font-size: 14pt;\"> function foo(x) {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var tmp = 3;<\/span><br \/>\n<span style=\"font-size: 14pt;\"> function bar(y) {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> alert(x + y + (++tmp));<\/span><br \/>\n<span style=\"font-size: 14pt;\"> } bar(10);<\/span><br \/>\n<span style=\"font-size: 14pt;\"> }<\/span><br \/>\n<span style=\"font-size: 14pt;\"> foo(2);<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Ao executar a fun\u00e7\u00e3o acima o resultado ser\u00e1 um alerta com o n\u00famero 16, pois a fun\u00e7\u00e3o bar() pode acessar a vari\u00e1vel x que foi definida como um argumento da fun\u00e7\u00e3o foo.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">E isto \u00e9 uma closure! O simples fato de que uma fun\u00e7\u00e3o pode acessar vari\u00e1veis que se encontram fora do escopo l\u00e9xico imediato cria uma closure.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">O pr\u00f3ximo exemplo vai deixar ainda mais claro a utilidade das closures.<\/span><\/p>\n<p><span style=\"font-size: 14pt;\">function adiciona(x) {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> return function(y) {<\/span><br \/>\n<span style=\"font-size: 14pt;\"> return x + y;<\/span><br \/>\n<span style=\"font-size: 14pt;\"> };<\/span><br \/>\n<span style=\"font-size: 14pt;\"> }<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var add5 = adiciona(5);<\/span><br \/>\n<span style=\"font-size: 14pt;\"> var add10 = adiciona(10);<\/span><br \/>\n<span style=\"font-size: 14pt;\"> console.log(add5(5)); \/\/ O resultado ser\u00e1 10<\/span><br \/>\n<span style=\"font-size: 14pt;\"> console.log(add10(5)); \/\/ O resultado ser\u00e1 15<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">N\u00f3s criamos a fun\u00e7\u00e3o adiciona(x), que aceita um argumento \u201cx\u201d e retorna uma nova fun\u00e7\u00e3o. A fun\u00e7\u00e3o retornada aceita um argumento \u201cy\u201d e retorna a soma de \u201cx\u201d + \u201cy\u201d. Ou seja, a fun\u00e7\u00e3o adiciona(x) \u00e9 uma \u201cm\u00e1quina de fun\u00e7\u00f5es\u201d. Ao referenci\u00e1-la em vari\u00e1veis que definem a vari\u00e1vel \u201cx\u201d, uma nova fun\u00e7\u00e3o \u00e9 criada.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">No exemplo acima n\u00f3s criamos duas novas fun\u00e7\u00f5es, add5() e add10(), a primeira adicionando 5 como o argumento \u201cx\u201d e a segunda adicionando 10. Estas duas fun\u00e7\u00f5es s\u00e3o closures, pois compartilham o mesmo corpo da fun\u00e7\u00e3o adiciona(), mas guardam argumentos diferentes.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Em termos de programa\u00e7\u00e3o, closures representam grande sofistica\u00e7\u00e3o. Tornam os c\u00f3digos mais compactos e f\u00e1ceis de ler, al\u00e9m de reaproveit\u00e1veis. Saber como utiliz\u00e1-las elimina muito tempo e retrabalho.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 14pt;\"> Esperamos que este artigo tenha deixado claro como elas funcionam e seja o come\u00e7o para o entendimento deste artif\u00edcio genial. Se voc\u00ea ainda tiver d\u00favidas, favor deixar uma mensagem em nossos coment\u00e1rios.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Saiba mais:<\/span><\/h2>\n<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><a title=\"Saiba a diferen\u00e7a entre declarar uma matriz com \u201carray()\u201d e \u201c[]\u201d em JavaScript\" href=\"https:\/\/www.impacta.com.br\/blog\/2015\/05\/08\/declarar-matriz-com-array-e-em-javascript\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Saiba a diferen\u00e7a entre declarar uma matriz com \u201carray()\u201d e \u201c[]\u201d em JavaScript<\/strong><\/a><\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><a title=\"Saiba tudo sobre o desenvolvedor web\" href=\"https:\/\/conteudo.impacta.com.br\/decodificando-desenvolvedor\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>e-Book gratuito: Decodificando o Desenvolvedor WEB. Baixe j\u00e1 o seu!<\/strong><\/a><\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><a href=\"https:\/\/goo.gl\/4KQo32\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-8543\" title=\"Fa\u00e7a j\u00e1 o download de seu ebook gratuito: Decodificando o desenvolvedor web\" src=\"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2015\/04\/decodificando-dev.jpg\" alt=\"Fa\u00e7a j\u00e1 o download de seu ebook gratuito: Decodificando o desenvolvedor web\" width=\"350\" height=\"175\" \/><\/a><\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"font-size: 14pt;\">Deixe seu coment\u00e1rio! Nos conte se voc\u00ea j\u00e1 conhecia os Closures na plataforma Javascript ou se caso tenha ficado alguma d\u00favida!<\/span><\/p>\n<div class=\"sharing-default-minimal post-bottom\"><div class=\"nectar-social default\" data-position=\"\" data-rm-love=\"0\" data-color-override=\"override\"><div class=\"nectar-social-inner\"><a href=\"#\" class=\"nectar-love\" id=\"nectar-love-9832\" title=\"Love this\"> <i class=\"icon-salient-heart-2\"><\/i><span class=\"love-text\">Love<\/span><span class=\"total_loves\"><span class=\"nectar-love-count\">0<\/span><\/span><\/a><a class='facebook-share nectar-sharing' href='#' title='Share this'> <i class='fa fa-facebook'><\/i> <span class='social-text'>Share<\/span> <\/a><a class='twitter-share nectar-sharing' href='#' title='Share this'> <i class='fa icon-salient-x-twitter'><\/i> <span class='social-text'>Share<\/span> <\/a><a class='linkedin-share nectar-sharing' href='#' title='Share this'> <i class='fa fa-linkedin'><\/i> <span class='social-text'>Share<\/span> <\/a><a class='pinterest-share nectar-sharing' href='#' title='Pin this'> <i class='fa fa-pinterest'><\/i> <span class='social-text'>Pin<\/span> <\/a><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>As\u00a0closures em JavaScript\u00a0permitem que programadores escrevam melhor, de modo mais conciso e expressivo. Mas voc\u00ea sabe o que, de fato, elas s\u00e3o? Ter um conhecimento sobre closures e como utiliza-las \u00e9 um passo importante para compreender mais ainda a linguagem de programa\u00e7\u00e3o JavaScript. Uma closure \u00e9 uma fun\u00e7\u00e3o interna que possui acesso a (refer\u00eancia) vari\u00e1veis [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":17479,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[356,357,57,349],"class_list":["post-9832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desenvolvimento","tag-closure","tag-desenvolvimento-em-javascript","tag-javascript","tag-linguagem-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Como funcionam as Closures em JavaScript?<\/title>\r\n<meta name=\"description\" content=\"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/\" \/>\r\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Como funcionam as Closures em JavaScript?\" \/>\r\n<meta property=\"og:description\" content=\"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/\" \/>\r\n<meta property=\"og:site_name\" content=\"Blog Impacta - Dicas e Not\u00edcias sobre Carreira\" \/>\r\n<meta property=\"article:published_time\" content=\"2016-08-08T21:40:57+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"850\" \/>\r\n\t<meta property=\"og:image:height\" content=\"283\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Reda\u00e7\u00e3o Impacta\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reda\u00e7\u00e3o Impacta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/\",\"url\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/\",\"name\":\"Como funcionam as Closures em JavaScript?\",\"isPartOf\":{\"@id\":\"https:\/\/www.impacta.com.br\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg\",\"datePublished\":\"2016-08-08T21:40:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/2e0896bac7656da15b68f5ad2ddd0d8c\"},\"description\":\"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage\",\"url\":\"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg\",\"contentUrl\":\"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg\",\"width\":850,\"height\":283},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.impacta.com.br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como funcionam as Closures em JavaScript?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/#website\",\"url\":\"https:\/\/www.impacta.com.br\/blog\/\",\"name\":\"Blog Impacta - Dicas e Not\u00edcias sobre Carreira\",\"description\":\"Dicas, Not\u00edcias e Conte\u00fados sobre Carreira, Tecnologia, Design, Gest\u00e3o e Marketing. Conhe\u00e7a e Acompanhe o Blog Impacta\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.impacta.com.br\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/2e0896bac7656da15b68f5ad2ddd0d8c\",\"name\":\"Reda\u00e7\u00e3o Impacta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7443a59e479c8f31067628e3a4bed9ad?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7443a59e479c8f31067628e3a4bed9ad?s=96&d=mm&r=g\",\"caption\":\"Reda\u00e7\u00e3o Impacta\"},\"url\":\"https:\/\/www.impacta.com.br\/blog\/author\/redacao\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como funcionam as Closures em JavaScript?","description":"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/","og_locale":"pt_BR","og_type":"article","og_title":"Como funcionam as Closures em JavaScript?","og_description":"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.","og_url":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/","og_site_name":"Blog Impacta - Dicas e Not\u00edcias sobre Carreira","article_published_time":"2016-08-08T21:40:57+00:00","og_image":[{"width":850,"height":283,"url":"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg","type":"image\/jpeg"}],"author":"Reda\u00e7\u00e3o Impacta","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Reda\u00e7\u00e3o Impacta","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/","url":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/","name":"Como funcionam as Closures em JavaScript?","isPartOf":{"@id":"https:\/\/www.impacta.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg","datePublished":"2016-08-08T21:40:57+00:00","author":{"@id":"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/2e0896bac7656da15b68f5ad2ddd0d8c"},"description":"Voc\u00ea sabe o que s\u00e3o e como funcionam as Closures em JavaScript? N\u00e3o se preocupe, pois nesse artigo a gente mostra tudo para voc\u00ea.","breadcrumb":{"@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#primaryimage","url":"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg","contentUrl":"https:\/\/www.impacta.com.br\/blog\/wp-content\/uploads\/2020\/04\/header_javascript.jpg","width":850,"height":283},{"@type":"BreadcrumbList","@id":"https:\/\/www.impacta.com.br\/blog\/como-funcionam-as-closures-em-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.impacta.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Como funcionam as Closures em JavaScript?"}]},{"@type":"WebSite","@id":"https:\/\/www.impacta.com.br\/blog\/#website","url":"https:\/\/www.impacta.com.br\/blog\/","name":"Blog Impacta - Dicas e Not\u00edcias sobre Carreira","description":"Dicas, Not\u00edcias e Conte\u00fados sobre Carreira, Tecnologia, Design, Gest\u00e3o e Marketing. Conhe\u00e7a e Acompanhe o Blog Impacta","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.impacta.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/2e0896bac7656da15b68f5ad2ddd0d8c","name":"Reda\u00e7\u00e3o Impacta","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.impacta.com.br\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/7443a59e479c8f31067628e3a4bed9ad?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7443a59e479c8f31067628e3a4bed9ad?s=96&d=mm&r=g","caption":"Reda\u00e7\u00e3o Impacta"},"url":"https:\/\/www.impacta.com.br\/blog\/author\/redacao\/"}]}},"acf":{"post_description":null,"capa_mobile":null},"_links":{"self":[{"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/posts\/9832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/comments?post=9832"}],"version-history":[{"count":0,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/posts\/9832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/media\/17479"}],"wp:attachment":[{"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/media?parent=9832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/categories?post=9832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.impacta.com.br\/blog\/wp-json\/wp\/v2\/tags?post=9832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}