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 |
#2 · Zasláno: 5. 2. 2017, 18:28:59
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 |
#3 · Zasláno: 5. 2. 2017, 19:45:12
_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 |
#4 · Zasláno: 5. 2. 2017, 19:50:54
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 |
#5 · Zasláno: 5. 2. 2017, 20:30:01
_es:
Souhlas, řekl jsi to přesně, jsem rád, že to sedí s tím co jsem si myslel, dík ! |
||
ServIT Profil |
#6 · Zasláno: 7. 2. 2017, 07:12:23
Ř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
|
||
Časová prodleva: 6 let
|
0