Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jsLint error: “somefunction() was used before it was defined”

Why does JSLint complain if something uses a function that hasn't been defined already? The point is that the function is defined -- and if that something calls that function, that function exists and things will work.

Take a look at the code below:

function foo()
{
   // calls bar()
};

function bar()
{
   // calls foo()
};

There is no way to organize the 2 methods in such a way that it would make JSLint happy. How do I deal with this issue?

like image 528
StackOverflowNewbie Avatar asked Sep 15 '11 02:09

StackOverflowNewbie


2 Answers

JSLint can't deal with this as far as I know, but JSHint, based on JSLint, tackles this problem in a proper manner.

Just use the "latedef" property and set it to "false". In case you nevertheless want to detect these kind of problematic variable definitions, but do want to use function expressions and allow hoisting of these functions, you can set "latedef" : "nofunc".

Check it out here.

like image 116
erik van nieuwburg Avatar answered Oct 16 '22 17:10

erik van nieuwburg


See this answer:

Contending with JS "used before defined" and Titanium Developer

Basically, if you use the foo = function() { ... } form, you can declare var foo, bar; at the top to avoid the JSLint errors.

like image 14
MrTrick Avatar answered Oct 16 '22 16:10

MrTrick