E-Zine Exclusivo para o Whastapp

Javascript – Diferença entre as funções var name = function() e function name()?

javascript Javascript - Diferença entre as funções var name = function() e function name()?
foto_ramos Javascript - Diferença entre as funções var name = function() e function name()?

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
foto_ramos Javascript - Diferença entre as funções var name = function() e function name()?

Declaração de Função: function name()

Uma declaração de função define uma variável de função sem a necessidade de atribuição de variável. São constructs independentes, e não podem ser aninhados em blocos que não sejam de função (ver comentário mais abaixo). Seria como um “parente” das declarações de variável. Assim como variáveis precisam ser declaradas com var, funções são declaradas com function.

 

Expressão de Função: var name = function()

react_do_zero_ao_profissional Javascript - Diferença entre as funções var name = function() e function name()?Uma expressão de função define uma função como parte de uma expressão sintática maior, geralmente uma atribuição de variável. Funções definidas com expressões de função podem ter nome ou serem anônimas. Não podem iniciar por function, por isso os parênteses são usados na “auto invocação” no exemplo abaixo:

 

Exemplo de visibilidade de escopo:

 

“Funções não podem ser declaradas em blocos que não sejam de código”

Vejamos este código:

 

Alguns browsers vão retornar “primeiro”, outros “segundo”!

De acordo com a especificação, declarações de função até podem aparecer dentro de blocos de função, mas não dentro de blocos de ifwhilefor e outros blocos estruturais.

Nestes casos, o que deveria ocorrer é um syntax error, porém praticamente nenhuma das implementações faz isso na prática, e o que é pior, cada uma trata códigos como o do exemplo de uma maneira diferente (com exceção de BESEB e DMDScripot, conforme esta fonte).

Top
%d blogueiros gostam disto: