Autor Wątek: Tanah.pl  (Przeczytany 2642 razy)

Offline Khaine

  • Użytkownik

# Luty 28, 2010, 02:10:03
Cytuj
chcesz powiedzieć, że bardzo stara wersja FF lepiej renderuje JS niż nowiutkie wydanie Opery?
Nie lepiej, tylko inaczej (niekoniecznie te dwie wymienione), różne przeglądarki mogą interpretować JS. Dla przykładu FF 2.x, 3.x przełknie takie coś:
var a = { b : 3, d : 4, };
A IE już nie. Jeśli robisz aplikację na FF i po jakimś czasie sprawdzasz czy też działa na IE możesz się bardzo zirytować ;)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline MichalBe

  • Użytkownik
    • MichalBe's Github

# Luty 28, 2010, 02:21:44
Po to powstał JSLint zeby nikt swojej specyfikacji jezyka nie wtorzyl i zeby js wszedzie śmigał tak samo.

Offline Kos

  • Użytkownik
    • kos.gd

# Luty 28, 2010, 13:11:37
Nie lepiej, tylko inaczej (niekoniecznie te dwie wymienione), różne przeglądarki mogą interpretować JS. Dla przykładu FF 2.x, 3.x przełknie takie coś:
var a = { b : 3, d : 4, };
A IE już nie. Jeśli robisz aplikację na FF i po jakimś czasie sprawdzasz czy też działa na IE możesz się bardzo zirytować ;)

Wrzuciłem w JSLint i marudzi. Ej, to nawet C++ pozwala na dodatkowe przecinki w literałach tablic, o językach poziomu pythona czy nawet php nie wspominając. A tu javascript się postanowił wyłamać?

Offline Khaine

  • Użytkownik

# Luty 28, 2010, 13:21:06
kwestia interpretacji właśnie. IE dodatkowy przecinek, jak w moim przykładzie, interpretuje następująco: undefined is null, albo a is undefined (mniej więcej), a znaczy to tyle, że po ostatnim przecinku, IE uważa, że jest jakaś zmienna, ale nie wiadomo co, więc jest to undefined. I teraz jak IE wywali taki błąd to się szuka faktycznie jakiejś literówki w zmiennej, a nie jej braku.

Offline MichalBe

  • Użytkownik
    • MichalBe's Github

# Luty 28, 2010, 15:54:27
Nie lepiej, tylko inaczej (niekoniecznie te dwie wymienione), różne przeglądarki mogą interpretować JS. Dla przykładu FF 2.x, 3.x przełknie takie coś:
var a = { b : 3, d : 4, };
A IE już nie. Jeśli robisz aplikację na FF i po jakimś czasie sprawdzasz czy też działa na IE możesz się bardzo zirytować ;)

Wrzuciłem w JSLint i marudzi. Ej, to nawet C++ pozwala na dodatkowe przecinki w literałach tablic, o językach poziomu pythona czy nawet php nie wspominając. A tu javascript się postanowił wyłamać?


Nie do końca masz racje. Jeśli chcesz stworzyć pustą tablice (o undefinedowanych elementach) możesz to zrobić zgodnie ze specyfiką języka poprzez

a=[,,,];

i sprawdzenie teraz ilości niezidentyfikowanych elementów w tej tablicy zwraca dosyć nieoczekiwane rezultaty, mianowicie analizujac poprzedni przykład wydawało by się ze tablica ma 4 elementy ( a=[(tu),(tu),(tu),(i tu)]; ), jednak
a.length // w ie zwroci 4, czyli poprawnie i intuicyjnie, a w ff 3

wlasnie przez to ze ff odrzuca ostatni przecinek jako taki z końca listy a nie oddzielający elementy. Nie bronie w żadnym wypadku IE< poprostu to jest jedna z nielicznych rzeczy które akurat rozwiązali logicznie.