2013-01-31 11 views
41

Po każdym wykonaniu console.log do dziennika wyjściowego jest dodawany wiersz z informacją: undefined.Konsola Chrome/Firefox.log zawsze dołącza wiersz z napisem niezdefiniowanym.

Zdarza się w przeglądarce Firefox i Chrome w systemach Windows i Linux.

+5

Więc jakie jest twoje pytanie? Czy możesz pokazać przykładowy kod, który to produkuje? Jakie zachowanie oczekujesz? – kapa

+0

To prawdopodobnie za mało informacji, aby rozwiązać twój problem. –

+1

Dałem mu to, co mogłem zrobić, chociaż w rzeczywistości brakuje mu niektórych informacji :) – talkol

Odpowiedz

58

Jeśli używasz console.log() z pliku JS, ta linia undefined nie powinna być dołączana.

Jeśli używasz console.log() z poziomu samej konsoli, ma to sens. Oto dlaczego: W konsoli możesz wpisać nazwę zmiennej (na przykład spróbuj wpisać window) i wypisze informacje na jej temat. Po uruchomieniu dowolnej funkcji void (np. Console.log) z konsoli, w tym przypadku drukuje również informacje o wartości zwracanej, undefined.

Przetestowałem oba przypadki na moim Chrome (Mac ver 23.0.1271.101) i rzeczywiście widzę linię undefined po uruchomieniu jej w konsoli. Ten undefined pojawia się również, gdy piszę ten wiersz w konsoli: var bla = "sdfdfs"

+0

Dzięki za odpowiedź. Używam go z konsoli, próbowałem zatrzymać wszystkie rozszerzenia, ale otrzymuję ten sam wynik. –

+0

Cóż, to jest oczekiwane zachowanie. Wszystko działa tak, jak powinno. Możesz włączyć rozszerzenia z powrotem :) Po prostu uruchom konsolę.log z pliku JS, a tego nie zobaczysz. Dlaczego mimo wszystko uruchamiasz konsolę.log z konsoli? Możesz po prostu wpisać dowolną nazwę zmiennej bez konsoli.log – talkol

+0

, ale to nie było wcześniej, dlatego !! –

27

Chociaż odpowiedź talkol's jest ok, staram się umieścić go bardziej prosto:

JavaScript jest zaprojektowany jako dynamiczny język, co oznacza, że ​​typ (string, void, boolean ...) funkcji zwracanej wartości nie jest predefiniowane. Jeśli funkcja nie używa instrukcji return lub pustej instrukcji return bez wartości, JavaScript automatycznie zwraca undefined. Oznacza to, że w JavaScript każda funkcja zwraca coś, co najmniej nieokreślone.

Funkcja w konsoli Chrome używa pustej instrukcji return, więc zwrot tej funkcji jest niezdefiniowany. Ta funkcja zwraca również wartość wyświetlaną w konsoli Chrome.

[Jeśli ktoś wie, gdzie można znaleźć definicję funkcji w kodzie źródłowym Google Chrome console.log(), prosimy o komentarz z linkiem, to możemy nawet pójść dalej i patrzeć na prawdziwego kodu, byłoby miło.]

Źródła:

+0

Odsyłanie innych wpisów jest w porządku, ale to nie jest pełne odpowiedź, aby lepiej pasowała jako komentarz do odpowiedzi, do której się odnosisz. – Dan

+3

Próbowałem to zrobić, ale nie jestem w stanie komentować z powodu braku wystarczającej reputacji ("Musisz mieć 50 punktów reputacji do komentowania"), więc pomyślałem, że używanie "nieoptymalnego" sposobu odpowiadania zamiast komentowania byłoby lepsze niż nie publikować. –

+0

To jest w porządku. Nie mogę jednak usunąć mojej wersji bez edytowania tego postu. Umysł rozwijający to, co znajduje się pod tym linkiem w odpowiedzi? Jeśli możesz to zrobić, to mogę zmienić swój głos :) – Dan

-2

Jeśli używasz console.log emitować wielu wartości w jednej linii, oto hacky alternatywa:

var1 + ' ' + var2 + ' ' + var... 

(lepsze pomysły mile widziane, to może wysadzić w pewnych okolicznościach)