Posługiwać się var czy function?

0

Witam. Przeglądając projekty na githubie odnośnie javascript'u zauważyłem że niektórzy używają funkcji(prototype) do tworzenia obiektów, natomiast inni posługują się zmiennymi(var) do tworzenia obiektów. Jaka jest różnica pomiędzy zmiennymi, funkcjami i jeszcze innymi częściami odnośnie tworzenia obiektów? Mógłby mi ktoś to objaśnić?

0

w zasadzie nie ma różnicy - w przypadku

function f()
{

}

tworzysz funkcję f, w przypadku

var f = function()
{

}

bo domyślam się że o to chodzi - też tworzysz funkcję i przypisujesz ją do zmiennej o nazwie f

różnica jest niewielka, ale jest - w drugim przypadku możesz podmienić funkcję w dowolnym momencie na inną, w pierwszym nazwa f jest stale przypisana funkcji
funkcja stworzona w normalny sposób jest dostępna w dowolnym miejscu, nawet przed jej zadeklarowaniem

w drugim przypadku funkcja jest przypisywana do zmiennej dopiero gdy interpreter dojdzie do tego miejsca - co wyklucza wywołanie tej funkcji wcześniej niż przed tą linią

jest też wolniejsze - jeżeli zadeklarujesz funkcje w sposób drugi to silnik js najpierw musi stworzyć te funkcje a potem po kolei je poprzypisywać do zmiennych - w pierwszym przypadku tylko je tworzy
znaczącą różnicę w wydajności widać już po kilku tysiącach stworzonych w ten sposób funkcji (lub stworzonych elementach którym metody są przypisywane w ten sposób)

1

Wspominając tylko mimochodem, to od ES6 będzie dostępna nowa składnia:

class Foo {
  boo() {}
}
0
winerfresh napisał(a):

W teorii jest wolniejsze. V8 z racji popularności takowego rozwiązania raczej optymalizuje to do tego samego

w praktyce jest wolniejsze, sprawdzane właśnie na V8
nie da się tego raczej zoptymalizować bo funkcje zadeklarowane w ten sposób mogą się w każdej chwili zmienić

0

Dziękuję każdemu za objaśnienie. Teraz już rozumiem o co z tym chodzi ;)

@n0name_l tak o to właśnie mi chodziło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1