TCH (statz) | #1, Főfasz (10466) |
1522 | #4ec1 | ^ | Idézet | Fri, 03 Jan 2020 22:37:57 +01 |
188.143.*.* | *.pool.digikabel.hu |
Néha egyszerűen nem fogom fel, hogy miféle logika szerint működik a JS... Adott a következő függvény: function blacklisted(hostname) { var spl, ret, hn; spl = hostname.split("."); if (spl.length >= 2) { hn = spl[spl.length - 2] + "." + spl[spl.length - 1]; ret = (hn == "x.com") || (hn == "y.com") || (hn == "z.com") ; return ret; } else { return false; } }Ez így tökéletesen működik. Ha viszont kiveszem a ret változót: function blacklisted(hostname) { var spl, hn; spl = hostname.split("."); if (spl.length >= 2) { hn = spl[spl.length - 2] + "." + spl[spl.length - 1]; return (hn == "x.com") || (hn == "y.com") || (hn == "z.com") ; } else { return false; } }Akkor undefined-et ad vissza! Úgy, hogy ha belül kialertelem azt amit vissza kell adnia, akkor az stimmel! Tehát belül még jó, de mire visszatér, nem jó! Több, mint egy órám ráment erre, mire rájöttem, de csak arra jöttem rá, hogy így működik, arra nem, hogy miért, hiszen működnie kellene külön visszatérési változó nélkül is... Rated: WTF?! Természetesen a gugliban csak olyan esetet lehet találni, hogy lehagyta a delikvens a return-t a függvényből; hát úgy persze, hogy undefined, de itt nem volt lehagyva... Sz*rk: Megoldódott. Mit mondhatnék...DZSUVASZKRIPT ŰBERSUKKSSZ!!! |