Javascript nomeada função como uma expressão
Código Javascript
<code>var d = function c() { console.log(c); }; d(); // function c() { console.log(c); }; c(); // Reference Error </code>
Eu entendo o conceito de içamento variável onde as declarações de variáveis e definições de funções são içadas para o topo do escopo existente. Também a definição de função em expressões de função não é içada.
Então, acima será
<code>var d; d = function c() { console.log(c); }; d(); c(); </code>
Daí d é uma referência a uma função nomeada c
na execuçãod()
a função c é executada no escopo global, onde não há nenhuma variável ou propriedade denominada c. Mas ainda consola consegue registrar a definição de função de c.Quando eu tenteic()
Eu tenho um erro de referência. [Como eu esperava]O caso 2 prova que não existe uma propriedade de janela chamada c disponível.d()
consegue imprimir a definição do c na execução?
Toda função tem sua própria definição em seu escopo local como uma propriedade?