Wpis z mikrobloga

Ogarniam sobie kilka kursów js i w jednym funkcje definiują za pomocą function() {} a w drugim const xx = () => {} które lepiej używac ?

i takie jeszcze inne pytanie. Jak wygląda sytuacja z pracą z JS bez studiów ? jest możliwe znalezienie pracy czy bez studiów ani rusz ?
#javascript
  • 11
@Senthill:

function () {} to deklaracja z podstawowego JS, definiuje swoj wlasny scope
arrow function czyli () => {} nie tworzy nowego scope, wiec mozna uzywac latwo .this odnoszac sie do parenta

plus roznice w hoistingu i closure i takie tam ale tych nie jestem pewien

ogolnie uzywasz nazwanych funkcji tam gdzie sie da, jak potrzebujesz do czegos konkretnego arrow function to robisz arrow function np. nie chcesz nowego scope
function () {} to deklaracja z podstawowego JS, definiuje swoj wlasny scope

arrow function czyli () => {} nie tworzy nowego scope, wiec mozna uzywac latwo .this odnoszac sie do parenta


@Melcma: chyba coś pokręciłeś, co rozumiesz przez to że jedna tworzy scope, a druga nie? Różnica jest tylko taka, że oprócz składni pierwsza ma this i arguments tworzone dynamicznie, w momencie wywołania, a druga dziedziczy je leksykalnie z funkcji okalającej.
Różnica jest tylko taka, że oprócz składni pierwsza ma this i arguments tworzone dynamicznie, w momencie wywołania, a druga dziedziczy je leksykalnie z funkcji okalającej.


@Marmite: madrego to dobrze posluchac
@Senthill @Marmite uzupełniłbym tylko tym że

function foo(){}

jest poddawane hoistingowi, natomiast

const foo = () => {}

już nie, gdyż w sumie jest najzwyklejsza deklaracja stałej, której przypisujemy referencję do funkcji.

@Senthill, jeśli jeszcze nie wiesz co to hoisting to zguglaj koniecznie :)
@fistasheq: Czyli tworzenie funkcji const foo = () => {} pozwala ją tylko wywołać po tym jak są zdeklarowaliśmy w dokumencie. natomiast z function obojętnie kiedy gdyż podlega ona hoistingowi ? dobrze rozumiem ?:v
@fistasheq: no to jest akurat specyfika bindingów let/const, nie ma to związku z arrow function per se, bo tak samo zadziała const x = function(){}. No i tak naprawdę one są w pewien sposób poddawane hoistingowi - tyle że w ich przypadku działa temporal dead zone

A const nie jest "deklaracją stałej" - to binding jest stały, żeby czasem komuś nie przyszło na myśl, że wartość po prawej stronie jest niemutowalna