Autor Zpráva
snazimse
Profil
Zdravím,

chtěl jsem se prosím zeptat zde přítomných na názor, jak debugovat lépe jquery, používám jen consoli...

Dneska se mi stala věc. Kód:


jQuery.each(menu_values, function( index, value ) {

if (jQuery( this ).text() !== undefined) {
console.log( index + ": " + value );
}
});


Dal jsem do kontroly definovanosti, namísto value z dané iterace,
hodnotu z jiné předchozí iterace tedy jQuery( this ).text(), udělal jsem to omylem, než jsem to
opravil kouknu do console a tam jen :

Uncaught RangeError: Maximum call stack size exceeded
at fa.getText (jquery.js:2)
at fa.getText (jquery.js:2)
at fa.getText (jquery.js:2)


To je fakt super a jak asi zjistím, na kterém řádku to je, debug k ničemu :( že velikost callstacku je vyčerpána, mi nepomůže vůbec...
Proč to neukáže na kterém konkrétním řádku k tomu došlo, nebo minimálně v které iteraci ? Může se k tomu někdo vyjádřit? Jaké máte s tím zkušenosti ?¨
Docela mě to naštvalo...

Děkuji Vám převelice!
_es
Profil
snazimse:
V dokumentácii jQuery by si si mohol pozrieť, čo vracia metóda text: api.jquery.com/text/#text
Takže s hodnotou undefined to asi nemá zmysel porovnávať.

Proč to neukáže na kterém konkrétním řádku k tomu došlo
Pretože asi na žiadnom „konkrétnom riadku“ k vyvolaniu chyby nedošlo, lebo si spravil nejakú takú chybu, že sa spotrebovalo priveľa pamäte.
snazimse
Profil
_es:

Díky za reakci, jaktože nedošlo, vždycky dojde na nějakém řádku k chybě, nebo chybné interpretaci, což došlo...
Ale v tomhle případě to nahlásilo problém zacyklení paměti, ale když člověk potřebuje vědět, kde k němu došlo rychleji, než, že bude čumět do
kódu, zvlášť když je objemnější, či poslední známý funkční stav, ale hádám, že si to představuju moc jednoduše a jazyk je na tohle krátký...

Ale jak říkám, ještě jednou díky moc za reakci, máš určitě pravdu, nicméně stále mi to přijde nepraktické :)
_es
Profil
snazimse [#3]:
Ale hlásenie chýb nie je nejaká pokročilá umelá inteligencia, čo by mala rozumieť kódu lepšie, než ten, čo ho napísal. A či je trebárs prekročenie rozsahu pamäte úmyselné alebo neúmyselné...
snazimse
Profil
_es:

Souhlas, řekl jsi to přesně, jsem rád, že to sedí s tím co jsem si myslel, dík !
ServIT
Profil
Řekl bych, že ta neurčitost "kde se to stalo" je dána inline funkcí. Pro interpreter je to jiná vrstva kódu, a tam čísluje od jedničky. Když napíšu event funkci jako inline, a něco tam lognu, taky mi to tvrdí, že událost nastala na řádku 1 ... Asi to jinak nejde

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: