- Use 4-spaces for indentation (because it's easier to be consistent with Python than it is to switch your editor back and forth).
- Javascript variables names should always be
camelCase(notsnake_case). - Static variables and configuration parameters should be in
TITLECASE_WITH_UNDERSCORES. - Named functions should look like this
var functionName = function() {}. - All global variables should be defined at the top of the file.
- All variables should be constrained to the current scope with
var. - Declare only a single variable on one line.
- End all statements with a semicolon.
- Use spaces after opening and before closing braces and brackets in array and object definitions, i.e.
{ foo: [ 1, 2, 3 ] }not{foo:[1,2,3]}. - Do not use spaces after opening or before closing parentheses, i.e.
if (foo === true) {and notif ( foo === true ) {. - When accessing properties of a data structure (such as one retrieved using
getJSON) prefer bracket syntax (data['property']) to attribute syntax (data.property). - Very frequent property references should be cached, i.e.
var array_length = array.length;. - Use
===rather than==. (Why?) - Use single-quotes for strings.
For consistency, prefer the following libraries to others that perform the same tasks:
- jQuery for DOM manipulation
- Underscore.js for functional programming (where Underscore and jQuery overlap, i.e.
each(), prefer Underscore) - Bootstrap for responsiveness
- Moment.js for datetime handling
- jPlayer for audio/video playback
- jQuery references that are used more than once should be cached. Prefix these references with
$, i.e.var $electris = $('#electris');. - Whenever possible constrain jQuery DOM lookups within the scope of a cached element. For example,
$electris.find('.candidate')is preferable to$('.candidate'). - Always use on, never bind, delegate or live.
onshould also be preferred to "verb events", such as click.