ugrás a tartalomhoz

Érdekes gondolkodásmód

csabessz47 · 2016. Ápr. 20. (Sze), 15.58
Sziasztok,

Most próbálták nekem megmagyarázni, hogy a következő kódrészlet milyen hasznos, mert hogy ilyenkor a callback üres function lesz és nem fog meghalni az a kód, ami utána használná.
  1. var send = function (url, data, callback) {  
  2.   callback = callback || function () {};  // Ez az egy sor az igazán lényeges  
  3.   $.ajax({  
  4.     ...  
  5.     'beforeSend'function () {  
  6.       callback(SEND_BEFORE);  
  7.     },  
  8.     .  
  9.     .  
  10.     .  
  11.   });  
  12. };  
Szerintem normális ember reflexből arra következtetne, hogy a callback egy boolean lesz, nem önmagára értékelődik ki, ezért én nagyívben kerülném a használatát az ilyen szép kis vagy feltételeknek.

Nektek mi a véleményetek erről?
Főleg hogy a leendő meggyőző PHP-ban is használja :)
 
1

Nincs vele gond.

T.G · 2016. Ápr. 20. (Sze), 16.29
Szerintem nincs vele gond. Nem egy best practices-ben is szerepel:
https://www.thinkful.com/learn/javascript-best-practices-1/#Use-Shortcut-Notations
2

Számomra egyértelmű ennek a

Endyl · 2016. Ápr. 20. (Sze), 16.37
Számomra egyértelmű ennek a szintaktikája, de lehet, hogy csak a megszokás miatt.

Ugyanakkor az MDN-es referencia legelején leírják ezt a működést, úgyhogy aki veszi a JS megtanulásának fáradtságát, az hamar találkozik vele (és nem is a JS az egyetlen nyelv, amiben így működnek a logikai operátorok).

Továbbá amíg nem lehet(ett) megadni alapértelmezett értéket paramétereknek, addig ez (volt) a hasonló funkcionalitás elérésének legtömörebb módja.

Én személy szerint kifejezőnek tartom, de megállapodás kérdése, hogy adott projektben/csapatban elfogadott-e az ilyen nyelvi "apróságok" használata.
3

|| és &&

Poetro · 2016. Ápr. 20. (Sze), 18.00
JavaScript-ben a || és && nem boolean értéket adnak vissza, ugyan logikai operátorok.
A && operátor az első hamisra kiértéklődő operandust adja vissza, vagy az utolsót.
  1. (0 && 1) === 0  
  2. (1 && 0) === 0  
  3. (2 && 1) === 1  
Az || operátor pedig az első igazra kiértékelődő operandust adja vissza, vagy az utolsót.
  1. (0 || 1) === 1  
  2. (1 || 0) === 1  
  3. (2 || 1) === 2  
4

Elég elfogadott és ismert

bamegakapa · 2016. Ápr. 21. (Cs), 11.37
Elég elfogadott és ismert megoldás ez a Javascript világában, szerintem használd nyugodtan.

Írhatod helyette ezt is (csak hát a felesleges ismétlés):
  1. callback = callback ? callback : function () {};  
vagy vizsgálgathatod az értéket minden egyes meghívás előtt, de szerintem még mindig a vaggyal jársz a legjobban (paraméterek esetén persze használhatod az említett default paraméterértéket helyette). Számomra jól olvasható, kimondva is jól illeszkedik a logikámba.
5

Ma is tanultam

csabessz47 · 2016. Ápr. 21. (Cs), 12.47
Köszönöm, akkor úgy tűnik, én vagyok elmaradott, nem gondoltam volna, hogy ez ennyire elterjedt :)
6

Ez ilyen :)

janoo · 2016. Ápr. 22. (P), 11.18
Ez a szintaktika teljesen elfogadott, van hogy 3 vagy akár 5-6 lehetőséget is felsorolnak.
Sokkal szebb lesz így a kódod :)

Viszont ennél a funkciónál semmi értelme a callback-et ellenőrizned, és üres funkcióval pótolnod, mert a jQuery is ellenőrzi, és természetesen csak akkor hívja meg, ha van.
A jQuery 2.2.2-nek a 8641. sorában találod az if(s.beforeSend && ...