/ / Jaka jest różnica między funkcjami anonimowymi i wbudowanymi w JavaScript? [zamknięty] - javascript, funkcja, inline, anonimowy

Jaka jest różnica między funkcjami anonimowymi i wbudowanymi w JavaScript? [zamknięty] - javascript, funkcja, inline, anonimowy

Tytuł podsumowuje moje pytanie. Przykład, który demonstruje punkt, byłby miły.

Odpowiedzi:

22 dla odpowiedzi nr 1

Po pierwsze, nie wydaje się, że istnieje definicja consensus dla funkcji inline w JavaScript inline funkcja jest specjalnym przypadkiem funkcji JavaScript. Na inline funkcja jest funkcją przypisaną do zmiennej, która jest tworzona w środowisku wykonawczym zamiast w czasie parsetu.

Funkcje anonimowe i funkcje inline sąpraktycznie tak samo, ponieważ są tworzone w czasie wykonywania. Różnica polega na tym, że funkcja inline jest przypisana do zmiennej i dlatego może być ponownie wykorzystana. W ten sposób funkcje inline działają tak samo jak zwykłe funkcje.

Funkcjonować

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

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

Funkcja Inline

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

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

Anonimowa funkcja

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

Funkcje anonimowe i wbudowane mogą mieć kary wydajności w stosunku do zwykłej funkcji. Widzieć var functionName = function () {} vs function functionName () {}.


2 dla odpowiedzi nr 2

Funkcja Inline jest nieco inna, cytując z Wikipedii:

funkcja inline jest funkcją, na którejKompilator został poproszony o wykonanie ekspansji liniowej. Innymi słowy, programista zażądał, aby kompilator włączył całe ciało funkcji w każdym miejscu, w którym funkcja jest wywoływana, zamiast generować kod wywołujący funkcję w jednym miejscu, w którym jest zdefiniowany. Kompilatory nie są zobowiązane do przestrzegania tego żądania.

JavaScript nie obsługuje koncepcji funkcji inline. Ale znalazłem kilka odniesień w sieci, w których wywołania zwrotne takie jak:

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

są nazywane funkcją inline. Jak widać, te funkcje również nie mają żadnej nazwy, więc są w zasadzie takie same jak funkcje anonimowe. Myślę, że skoro definiujesz funkcję, w której ją używasz, odwołuje się do niej funkcja inline, ale nazwa "funkcja anonimowa" najlepiej opisuje to pojęcie.


1 dla odpowiedzi nr 3

Funkcje anonimowe są zdefiniowane w ten sposób

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

Jednak definicja funkcji inline jest dla mnie niejasna.


1 dla odpowiedzi nr 4

Funkcja inline

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

Anonimowa funkcja

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

Robią to samo, ale w liniiFunkcja jest lepsza, gdy chcesz go ponownie użyć. Anonimowy jest dobry do jednorazowego użytku, ponieważ nie musisz się martwić, jeśli jego nazwa będzie kolidować z innymi zmiennymi, a to jest krótsze.

To zależy od twojej sytuacji.