Dado este exemplo de Javascript, encontrei
var sum = function() {
var i, sum = 0;
for(i = 0; i < arguments.length; i += 1) {
sum += arguments[i];
}
return sum;
};
Qual a vantagem de atribuir uma função a um var?
javascript
octopusgrabbus
fonte
fonte
Respostas:
A resposta curta, acredito, é simplesmente que você está criando uma função anônima atribuída a uma variável, em vez de criar uma função nomeada com ...
Uma boa maneira de verificar as diferenças é chamar .ToString () nelas e ver a diferença, ou você pode fazer o console.log (sum.name). Um dará um nome real e o outro nada, ou seja, a função anônima (aquela atribuída à var). Também há detalhes específicos, como a var sum = function () {} é definida no tempo de execução e a função sum () {} é definida no tempo de análise.
fonte
Uma vantagem é que você não pode usar uma declaração de função em um bloco. Eles podem estar apenas no nível superior de um arquivo ou diretamente dentro de outra função.
Tudo isso não é especificado pelo padrão e os navegadores fazem coisas diferentes, consulte /programming/10069204/function-declarations-inside-if-else-statements . Portanto, se você precisar usar o outro estilo algumas vezes, para obter consistência, sempre
Além disso, não tenho certeza disso, mas se bem me lembro, alguns minificadores antigos não eram inteligentes o suficiente para lidar com declarações de função e não renomeá-las.
fonte
Eu não sou um especialista em Javascript, então leve isso com um pouco de sal. Eu acho que em alguns casos as pessoas podem fazer isso por estilo e a mesma coisa pode ser alcançada simplesmente escrevendo "function sum () {...}"
No entanto, atribuir uma função a uma variável é uma técnica muito poderosa em programação funcional. Se você está familiarizado com OOP, é um pouco semelhante ao polimorfismo. Pense no exemplo clássico da classe base Animal e das classes derivadas de Gato / Cão. Você pode escrever um código que funcione com o Animal, mas quando ele chama uma função, essa função pode fazer um trabalho diferente dependendo do tipo de uma instância.
Na programação funcional, você pode ter um algoritmo que funcione com "uma função", mas se estiver usando uma variável para chamar essa função, terá a flexibilidade de atribuir uma função diferente em tempo de execução.
Por exemplo, digamos que você escreva um algoritmo para apresentar 10.000 pontos de dados em uma janela com apenas 500 pixels de largura. Cada pixel representará 20 pontos de dados e, para apresentá-los, você precisará agregar esses 20 pontos em um único valor.
Então, digamos que você defina um algoritmo para apresentar os 10.000 pontos e esse algoritmo usa uma variável de função chamada agregada da seguinte forma:
Agora, em tempo de execução, o usuário pode selecionar como os dados serão agregados. Sua variável de função real pode ser qualquer um dos seguintes:
fonte
É principalmente uma questão de estilo, já que as únicas situações em que a diferença aparece (chamando algumas das funções antes de terminar todas as declarações; usando o método toString) são tipos de casos de canto, na minha opinião.
Um dos argumentos que ouvi apoiando esse
var =
estilo é que ele é consistente com a maneira como você declara variáveis normais. Isso limita o número de recursos de idioma que você usa e simplifica a introdução do seu programa para alguém novo em Javascript.fonte