Opis problemu

Podczas wdrażania skryptów nie szybko doszukałem się błędu! Nie działały moje skrypty. „Jak to?! MÓJ kod nie działa” – pomyślałem wtedy. Jak się okazało, poprzedzający kod (nie mój :P) miał mały aczkolwiek istotny błąd. Brak średnika po deklaracji obiektu w formie literałowej – z użyciem „{” i „}”.

Jak to wyglądało

Mniej więcej tak:

var foo = {
bar: "yeah"
}

(function(w, d, u, $) {
  //tutaj mój ZAWSZE działający kod, bo przetestowany (TDD rulez!!!)
}(window, document, undefined, $));

W konsoli można uzyskać mniej więcej taki błąd:
„TypeError: ({bar:”yeah”}) is not a function `}(window, document, undefined, $));` @6″

Sprawdzałem kod wielokrotnie nie doszukując się błędu :(. Pomogło, gdy użyłem narzędzia JSHint. Wykazał skubaniec,  że po deklaracji obiektu foo nie ma średnika… Czyli naprawa problemu wygląda tak:

var foo = {
bar: "yeah"
}; //tutaj ZAWSZE średnik
(function(w, d, u, $) {
  //tutaj mój ZAWSZE działający kod, bo przetestowany (TDD rulez :D!!!)
}(window, document, undefined, $));

Wniosek

Zawsze, ale to ZAWSZE stawiaj średnik tam, gdzie jest on niezbędny! No i używaj JSHinta :D!