1. Declaration with value assignment 2. Declare loop variables and cache length inside of for() - this can increase performance <http://jsperf.com/caching-array-length/67> - caching length outside of for() is slower in almost all results (all Firefox and Safari, IE9 and some Chrome results) 3. Unnecessary return values
Example can be rewritten as: SelectParser.select_to_array = function(select) { var parser = new SelectParser(), _ref = select.childNodes; for (var _i = 0, _len = _ref.length; _i < _len; _i++) { parser.add_node(_ref[_i]); } return parser.parsed; }; yet another real example: CoffeeScript (with use of Prototype): class Chosen extends AbstractChosen ... no_results_clear: -> nr = null nr.remove() while nr = @search_results.down(".no-results") CoffeeScript translated to JavaScript: Chosen.prototype.no_results_clear = function() { var nr, _results; nr = null; _results = []; while (nr = this.search_results.down(".no-results")) { _results.push(nr.remove()); } return _results; }; and pure JavaScript: var Chosen = Class.create(AbstractChosen, { ... no_results_clear: function() { this.search_results.select(".no-results").invoke("remove"); }, ... }); -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To view this discussion on the web visit https://groups.google.com/d/msg/prototype-scriptaculous/-/FBTDmhOjgWoJ. To post to this group, send email to prototype-scriptaculous@googlegroups.com. To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.