bug

:)

17 KOMENTARZE

  1. Jakims specem od JS nie jestem, ale może ma to coś wspolnego z tym w jaki sposob i w jakiej kolejnosci przetwarzane są deklaracje/inicjalizacje.
    Moze date = new Date(…) wykonane zostanie zanim wykonamy date.split() w zwiazku z czym zawsze bedziemy splitowac defaultowa date z 1970..?

  2. A może ten setMonth(val – 1)?

    W sumie to jest troche błędów w logice:
    – brak deklaracji cnt; niby to js, ale resztę deklarujesz
    – potem pętla z cnt = format.parts.length – też trochę dziwne; że po prostu nie ma: i < format.parts.length
    – no i ostatnia rzecz; to niby if wymusza identycznosc tablic; ale parseInt robisz z parts a switcha na format.parts

    Ale to zasadniczo wszystko składnia i dobre obyczaje a nie błędy :P

  3. kod nie jest moj – musialem buga naprawic bo na niego natrafilem, ogolnie jest to kontrolka robiaca datapicker z twitter bootstraper – http://www.eyecon.ro/bootstrap-datepicker/

    – deklaracja cnt jest: var i = 0, cnt = length; to tak jakbys zapisal: var i = 0; var cnt = length; jest to niby w for, ale zostanie to przez kompilator js przezucone do czesci var parts;
    – to jest micro optimalization. kazda kropka w js (cos.wartosc) wymaga przegladania scope, zas length moze byc za kazdym razem przeliczany, dlatego w JS zaleca sie przypisywanie length do zmiennej;
    – tak, ale tutaj format jest wporzadku. w sensie dozwolone ustawienie formatu to d|dd, m|mm| oraz yy|yyyy, separator tez jest okreslony -|/. to ogolnie dziala dla pewnego setu danych, oczywiscie nie dostaniemy daty poprawnej jezeli nie podamy wszystkich parametrow poprawnie. jednak my do tej funkcji zewnatrz nie mamy dostepu i jest ona tylko wykorzystywana internal

  4. blisko, ale nie dokladnie to. kolejnosc przy deklarowaniu zmiennych jest taka jaka jest zapisana, to znaczy najpierw zostanie wykonany split a potem new Date.

  5. No to ostatnia próba, bo kończą mi się pomysły. Ale pamiętam że kiedyś z tym walczyłem i new Date() wymaga 7 parametrów a nie 6; ostatni to chyba milisekundy.

  6. hmm… zakładanie że jest 2000+ rok jest raczej błędem, ale chyba nie o to chodzi?
    podobnie month – 1?

    hmm.. czy w JS operator przecinka dziala podobnie jak w C? wtedy parts = val, ktore no nie ma wartosci.

  7. zastanawia mnie jeszcze val = parseInt ktory dla roku 2000 (podanego jako 00) moze zwrocic 2001?

  8. month – 1 nie jest bleden, setMonth przyjmuje wartosci o 0 do 11, stad tez ten -1.

    w tym wypadku val jest undefined – var x = 10, y, z = 5; alert(y === undefined)​​​​​​​​​​​​​​​​​​​​​​

    prawda, parseInt dla formatu roku yy i wartosci 00 zwroci 1 jako ze tak dziala js i jest to bug w kodzie, jezeli Jakub tez o tym myslal to przyznaje i mu racje. umknal mi on :) chyle czolo :)

    jednak jest bardziej wyrafinowany bug w tym wszystkim dla dat z yyyy (pelnym rokiem)

    tak ogolnie: ktos w ogole korzysta z roku w formie yy ?

Comments are closed.