/ / Qual é a diferença entre funções anônimas e embutidas em JavaScript? [fechado] - javascript, função, inline, anônimo

Qual é a diferença entre funções anônimas e embutidas em JavaScript? [fechado] - javascript, função, inline, anônimo

O título resume minha pergunta. Um exemplo que demonstra o ponto seria bom.

Respostas:

22 para resposta № 1

Em primeiro lugar, não parece haver uma definição consensual para funções embutidas em JavaScript. Eu considero uma na linha função para ser um caso especial de uma função JavaScript. A na linha function é uma função atribuída a uma variável que é criada no tempo de execução em vez de no parsetime.

Funções anônimas e funções embutidas sãopraticamente o mesmo, na medida em que eles são criados em tempo de execução. A diferença é que uma função inline é atribuída a uma variável e, portanto, pode ser reutilizada. Dessa forma, as funções embutidas funcionam da mesma forma que uma função normal.

Função

function func() {
alert ("function");
}

$("a").click(func);

Função Inline

var func = function() {
alert ("inline")
};

$("a").click(func);

Função anônima

$("a").click(function() {
alert("anonymous");
});

As funções anônimas e em linha podem ter penalidades de desempenho em relação a uma função regular. Vejo var functionName = function () {} vs função functionName () {}.


2 para resposta № 2

A função inline é um pouco diferente, citando a wikipedia:

uma função inline é uma função sobre a qual oCompilador foi solicitado para executar a expansão inline. Em outras palavras, o programador solicitou que o compilador insira o corpo completo da função em cada lugar que a função é chamada, em vez de gerar código para chamar a função no único local em que está definida. Os compiladores não são obrigados a respeitar este pedido.

Javascript não suporta o conceito de função inline. Mas eu encontrei algumas referências na web, onde retornos de chamada como:

(function(){
setTimeout(/*inline function*/function(){ /*some code here*/ }, 5);})
();

são chamadas de função inline. Como você pode ver, estas funções também não possuem nenhum nome, então elas são essencialmente as mesmas que as funções anônimas. Eu acho que, desde que você está definindo a função onde você está usando, ele foi referenciado pela função inline, mas o nome "função anônima" melhor descreve a noção.


1 para resposta № 3

Funções anônimas são definidas assim

var x = 1;
(function(x){
// Do something
console.log(x); // 1
})(x);

No entanto, a definição de função inline é um pouco incerta para mim.


1 para resposta № 4

Função Inline

var foo = function (){
alert("Hello")
}
setTimeout(foo, 100);

Função anônima

setTimeout(function(){
alert("Hello")
}, 100);

Eles estão fazendo a mesma coisa, mas em linhafunção é melhor quando você quiser reutilizá-lo. O anônimo é bom para uso único porque você não precisa se preocupar se o nome dele estiver em conflito com outras variáveis, e é mais curto.

Então depende da sua situação.