O'Reilly logo

Programming Social Applications by Jonathan LeBlanc

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Using JSLint to Spot JavaScript Issues Early

JSLint will hurt your feelings.

Douglas Crockford

JSLint is a tool developed by Douglas Crockford[2] to compile source JavaScript and inform the user of any potential security and rendering issues that are present in the code. The compiler itself is written in JavaScript, so it’s a fully encapsulated JavaScript environment.

Note

You can access the JSLint tool at http://www.jslint.org. The site lets you select what types of issues you would like to search for and report on.

For instance, take the following JavaScript code, which calculates a timestamp based on a provided year, month, and day:

function toTimestamp(year, month, day){
   var datum = new Date(Date.UTC(year,month-1,day));
   return datum.getTime()/1000
}

tstamp = toTimestamp(2011, 5, 15);

If we run this code block through the JSLint process, we will receive a series of messages listing all of the things that are wrong with our code:

Error:
 Problem at line 3 character 31: Missing semicolon.
 return datum.getTime()/1000
  Implied global: tstamp 6

In this message, we can see that we are missing a semicolon in our function’s return statement. In addition, our tstamp variable is not specified with a var at any point, so it is referenced as an implied global.

Now, if we run the same code through the cajoling process instead, we can see that it reports similar issues:

LOG Checkpoint: InlineCssImportsStage at T+0.548912216 seconds: LOG timestamp.html:4+31: Semicolon inserted:history.html:4: return datum.getTime()/1000 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required