Chcete zlepšit tuto otázku? Aktualizujte otázku, aby na ni bylo možné odpovědět pomocí faktů a citací úpravou tohoto příspěvku.
Zavřeno před 2 lety.
Vylepšete tuto otázkuPřed rokem jsem přešel z klasických OO jazyků, jako je Java, na JavaScript. Následující kód se v Javě rozhodně nedoporučuje (nebo dokonce není správný):
if(dayNumber = getClickedDayNumber(dayInfo)) { alert("day number found : " + dayNumber); } function getClickedDayNumber(dayInfo) { dayNumber = dayInfo.indexOf("fc-day"); if(dayNumber != -1) //substring found { //normally any calendar month consists of "40" days, so this will definitely pick up its day number. return parseInt(dayInfo.substring(dayNumber+6, dayNumber+8)); } return false; }
V podstatě jsem právě zjistil, že mohu přiřadit proměnnou k hodnotě v příkazu if condition a okamžitě zkontrolovat přiřazenou hodnotu, jako by byla booleovská.
Pro bezpečnější sázku to obvykle rozděluji do dvou řádků kódu, nejprve přiřadím a poté zkontroluji proměnnou, ale teď, když jsem to našel, jsem jen zvědavý, zda je to dobrá praxe v očích zkušených vývojářů JavaScriptu?
Odpověď
nedoporučoval bych to. Problém je v tom, že to vypadá jako běžná chyba, kdy se pokoušíte porovnat hodnoty, ale použijete jeden =
místo ==
nebo ===
. Když například uvidíte toto:
if (value = someFunction()) { ... }
nevíte, jestli to chtěli udělat, nebo jestli chtěli napsat tohle:
if (value == someFunction()) { ... }
Pokud opravdu chcete provést úkol na místě, doporučil bych provést také explicitní srovnání:
if ((value = someFunction()) === <whatever truthy value you are expecting>) { ... }