--- title: Função slug: Glossary/Function tags: - Glossário - Iniciante - Intro - JavaScript translation_of: Glossary/Function original_slug: Glossario/Função --- <p> </p> <p>Uma <strong>função</strong> <strong>(function)</strong> é um fragmento<span id="result_box" lang="pt"><span> de código que pode ser invocado por outro código, por si mesmo ou uma {{Glossary ("variável")}} que se refere à função. </span><span>Quando uma função é invocada, o {{Glossary ("Argument", "argumento")}} é passado para a função como input (entrada) e a função pode opcionalmente retornar um output (saída).</span> <span>Uma função em {{glossary ("JavaScript")}} também é um {{glossary ("objeto")}}.</span></span></p> <p><span id="result_box" lang="pt"><span>O nome da </span></span><span lang="pt"><span>função é um {{Glossary ("identificador")}} declarado como parte de uma declaração de função ou expressão de função.</span> <span>O nome da função {{Glossary ("escopo")}} depende se o nome da função é uma declaração ou expressão.</span></span></p> <h3 id="Diferentes_tipos_de_funções">Diferentes tipos de funções</h3> <p>Uma <strong>função anônima </strong>é uma função sem o nome da função:</p> <pre class="brush: js">function () {}; // or using the ECMAScript 2015 arrow notation () => {}; </pre> <p> </p> <p>Uma <strong>função nomeada</strong> é uma função com o nome da função:</p> <pre class="brush: js">function foo() {}; // or using the ECMAScript 2015 arrow notation const foo = () => {}; </pre> <p>Uma <strong>função interna</strong> é uma função dentro de outra função (<code>square</code> nesse caso). Uma <strong>função externa</strong> é uma função contendo uma função (<code>addSquares</code> nesse caso):</p> <pre class="brush: js">function addSquares(a,b) { function square(x) { return x * x; } return square(a) + square(b); }; //Using ECMAScript 2015 arrow notation const addSquares = (a,b) => { const square = x => x*x; return square(a) + square(b); }; </pre> <p>Uma <strong>função recursiva</strong> é uma função que invoca a si mesma. Veja {{Glossary("Recursão", "recursão")}}.</p> <pre class="brush: js">function loop(x) { if (x >= 10) return; loop(x + 1); }; //Using ECMAScript 2015 arrow notation const loop = x => { if (x >= 10) return; loop(x + 1); }; </pre> <p><span id="result_box" lang="pt"><span>Uma<strong> Expressão de Função Invocada Imediatamente</strong></span></span><span lang="pt"><span> (IIFE em Inglês) é uma função que é invocada diretamente após a função ser carregada no compilador do navegador.</span> <span>A maneira de identificar um IIFE é localizar os parênteses extra esquerdo e direito no final da declaração da função.</span></span></p> <pre class="brush: js">// Error (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) /* function foo() { console.log('Hello Foo'); }(); */ (function foo() { console.log("Hello Foo"); }()); (function food() { console.log("Hello Food"); })(); </pre> <p><span id="result_box" lang="pt"><span>Se gostaria de saber mais sobre o IIFE, confira a seguinte página no Wikipédia</span></span> : <a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">Immediately Invoked Function Expression</a></p> <h2 id="Leia_mais">Leia mais</h2> <h3 id="Referência_técnica">Referência técnica</h3> <ul> <li><a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Fun%C3%A7%C3%B5es" title="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Guide/Fun%C3%A7%C3%B5es">Funções</a></li> <li><a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Funções Arrow</a></li> </ul>