Quiz

Explique as diferenças no uso de `foo` entre `function foo() {}` e `var foo = function() {}`

Topics
JavaScript

O primeiro é uma declaração de funções, enquanto o segundo é uma expressão de funções. A diferença chave é que as declarações de funções tem seu corpo hoisted, mas os corpos das expressões de função não são (elas têm o mesmo comportamento hoisting que as variáveis). Para obter mais explicações sobre o hoisting, consulte a pergunta sobre hoisting. Se você tentar invocar uma expressão de função antes de ela ser definida, você receberá um erro Uncaught TypeError: XXX não é um erro de função.

Declaração de Função

foo(); // 'FOOOO'
function foo() {
console.log('FOOOOO');
}

Expressão de Função

foo(); // Uncaught TypeError: foo não é uma função
var foo = function () {
console.log('FOOOOO');
};

Exercícios

Verifique seu entendimento
Beta
Verifique seu entendimento Exercício 1 de 2
Verifique seu entendimento Exercício 1 de 2

What happens when this classic script runs?

declared();
expressed();
function declared() {
console.log('declared');
}
var expressed = function () {
console.log('expressed');
};