Tytuł podsumowuje moje pytanie. Przykład, który demonstruje punkt, byłby miły.
Odpowiedzi:
22 dla odpowiedzi nr 1Po 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.