Érdekes gondolkodásmód
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á.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 :)
■ 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á.
var send = function (url, data, callback) {
callback = callback || function () {}; // Ez az egy sor az igazán lényeges
$.ajax({
...
'beforeSend': function () {
callback(SEND_BEFORE);
},
.
.
.
});
};
Nektek mi a véleményetek erről?
Főleg hogy a leendő meggyőző PHP-ban is használja :)
Nincs vele gond.
https://www.thinkful.com/learn/javascript-best-practices-1/#Use-Shortcut-Notations
Számomra egyértelmű ennek a
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.
|| és &&
||
é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.||
operátor pedig az első igazra kiértékelődő operandust adja vissza, vagy az utolsót.Elég elfogadott és ismert
Írhatod helyette ezt is (csak hát a felesleges ismétlés):
Ma is tanultam
Ez ilyen :)
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 && ...