Dlaczego JSLint narzeka, jeśli coś używa funkcji, która nie została jeszcze zdefiniowana? Chodzi o to, że funkcja jest zdefiniowana - i jeśli to coś wywołuje tę funkcję, ta funkcja istnieje i rzeczy będą działać.Błąd jsLint: "somefunction() zostało użyte zanim zostało zdefiniowane"
Spójrz na poniższy kod:
function foo()
{
// calls bar()
};
function bar()
{
// calls foo()
};
Nie ma sposobu, aby zorganizować metody 2 w taki sposób, że miałoby to JSLint zadowolony. Jak sobie z tym poradzić?
Ale to tylko odrobinę inny niż "funkcja foo()", będący wyrazem funkcji i wszystkim. Plus, deklarowanie 'var foo, bar' na górze jest zbędne z powodu podnoszenia. Krótko mówiąc, 'var foo = function() ..., var bar = function() ...' zrobi wszystko dobrze technicznie. Dodatkowo, myślę, biorąc pod uwagę, że deklaracje funkcji są ładowane przed czymkolwiek innym - JSLint powinien już naprawić swoje rzeczy. – ZenMaster
@ZenMaster: Rozwidlenie 'jslint', [' jsHint'] (http://www.jshint.com/docs/), rozwiązało to, pozwalając ci ustawić '' latedef ": false' w opcjach. (Nie wpływa na nazwy zmiennych, tylko nazwy funkcji.) –
Ta odpowiedź złamie kod, który opiera się na podnoszeniu definicji funkcji. ~ –