Skip to content

Commit

Permalink
Don't cache length property in for loops
Browse files Browse the repository at this point in the history
  • Loading branch information
topaxi committed Feb 16, 2016
1 parent 444de32 commit b2c9e1c
Show file tree
Hide file tree
Showing 64 changed files with 129 additions and 145 deletions.
2 changes: 1 addition & 1 deletion STYLEGUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ for (var key in keys) {
// code
}

for (var i = 0, l = keys.length; i < l; i++) {
for (var i = 0; i < keys.length; i++) {
// code
}

Expand Down
2 changes: 1 addition & 1 deletion lib/jscs-rules/disallow-space-before-semicolon.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ module.exports.prototype = {

check: function(file, errors) {
var lines = file.getLines();
for (var i = 0, l = lines.length; i < l; i++) {
for (var i = 0; i < lines.length; i++) {
if (lines[i].match(/\s+;$/)) {
errors.add('Spaces are disallowed before semicolons.', i + 1, lines[i].length - 2);
}
Expand Down
6 changes: 3 additions & 3 deletions packages/container/lib/container.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,15 +226,15 @@ function buildInjections(/* container, ...injections */) {
var injections = [];
var injection;

for (var i = 1, l = arguments.length; i < l; i++) {
for (var i = 1; i < arguments.length; i++) {
if (arguments[i]) {
injections = injections.concat(arguments[i]);
}
}

container.registry.validateInjections(injections);

for (i = 0, l = injections.length; i < l; i++) {
for (i = 0; i < injections.length; i++) {
injection = injections[i];
hash[injection.property] = lookup(container, injection.fullName);
if (!isSingleton(container, injection.fullName)) {
Expand Down Expand Up @@ -425,7 +425,7 @@ function eachDestroyable(container, callback) {
var keys = Object.keys(cache);
var key, value;

for (var i = 0, l = keys.length; i < l; i++) {
for (var i = 0; i < keys.length; i++) {
key = keys[i];
value = cache[key];

Expand Down
4 changes: 2 additions & 2 deletions packages/container/lib/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -672,7 +672,7 @@ Registry.prototype = {

let localKnown = dictionary(null);
let registeredNames = Object.keys(this.registrations);
for (let index = 0, length = registeredNames.length; index < length; index++) {
for (let index = 0; index < registeredNames.length; index++) {
let fullName = registeredNames[index];
let itemType = fullName.split(':')[0];

Expand Down Expand Up @@ -704,7 +704,7 @@ Registry.prototype = {

var fullName;

for (var i = 0, length = injections.length; i < length; i++) {
for (var i = 0; i < injections.length; i++) {
fullName = injections[i].fullName;

if (!this.has(fullName)) {
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-application/lib/system/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -1128,7 +1128,7 @@ function logLibraryVersions() {
var maxNameLength = Math.max.apply(this, nameLengths);

debug('-------------------------------');
for (var i = 0, l = libs.length; i < l; i++) {
for (var i = 0; i < libs.length; i++) {
var lib = libs[i];
var spaces = new Array(maxNameLength - lib.name.length + 1).join(' ');
debug([lib.name, spaces, ' : ', lib.version].join(''));
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-application/lib/system/resolver.js
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ export default EmberObject.extend({

let known = dictionary(null);
let knownKeys = Object.keys(namespace);
for (let index = 0, length = knownKeys.length; index < length; index++) {
for (let index = 0; index < knownKeys.length; index++) {
let name = knownKeys[index];

if (typeRegexp.test(name)) {
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/lib/helpers/-join-classes.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
export default function joinClasses(classNames) {
var result = [];

for (let i = 0, l = classNames.length; i < l; i++) {
for (let i = 0; i < classNames.length; i++) {
let className = classNames[i];

if (className) {
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/lib/hooks/destroy-render-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export default function destroyRenderNode(renderNode) {

var streamUnsubscribers = renderNode.streamUnsubscribers;
if (streamUnsubscribers) {
for (let i = 0, l = streamUnsubscribers.length; i < l; i++) {
for (let i = 0; i < streamUnsubscribers.length; i++) {
streamUnsubscribers[i]();
}
}
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/lib/hooks/invoke-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default function invokeHelper(morph, env, scope, visitor, params, hash, h
// We subscribe the morph to the helperStream here, and also subscribe
// the helperStream to any params.
let addedDependency = false;
for (var i = 0, l = params.length; i < l; i++) {
for (var i = 0; i < params.length; i++) {
addedDependency = true;
helperStream.addDependency(params[i]);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/lib/hooks/subexpr.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export default function subexpr(env, scope, helperName, params, hash) {

var helperStream = buildHelperStream(helper, params, hash, null, env, scope, label);

for (var i = 0, l = params.length; i < l; i++) {
for (var i = 0; i < params.length; i++) {
helperStream.addDependency(params[i]);
}

Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/lib/morphs/morph.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ proto.cleanup = function() {
let toDestroy = this.emberToDestroy;

if (toDestroy) {
for (var i = 0, l = toDestroy.length; i < l; i++) {
for (var i = 0; i < toDestroy.length; i++) {
toDestroy[i].destroy();
}

Expand Down
5 changes: 2 additions & 3 deletions packages/ember-htmlbars/lib/streams/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@ import getValue from 'ember-htmlbars/hooks/get-value';
// We don't want to leak mutable cells into helpers, which
// are pure functions that can only work with values.
export function getArrayValues(params) {
let l = params.length;
let out = new Array(l);
let out = new Array(params.length);

for (let i = 0; i < l; i++) {
for (let i = 0; i < params.length; i++) {
out[i] = getValue(params[i]);
}

Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/tests/attr_nodes/sanitized_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ var badTags = [
multipartTemplate: compile('<iframe src=\'{{protocol}}{{path}}\'></iframe>') }
];

for (var i = 0, l = badTags.length; i < l; i++) {
for (var i = 0; i < badTags.length; i++) {
/* jshint -W083 */
(function() {
var subject = badTags[i];
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-htmlbars/tests/helpers/unbound_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ QUnit.test('should property escape unsafe hrefs', function() {
runAppend(view);

var links = view.$('a');
for (var i = 0, l = links.length; i < l; i++) {
for (var i = 0; i < links.length; i++) {
var link = links[i];
equal(link.protocol, 'unsafe:', 'properly escaped');
}
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-metal-views/lib/htmlbars-renderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ MorphSet.prototype.has = function(morph) {

MorphSet.prototype.clear = function() {
let morphs = this.morphs;
for (let i = 0, l = morphs.length; i < l; i++) {
for (let i = 0; i < morphs.length; i++) {
morphs[i].seen = false;
}

Expand Down
4 changes: 2 additions & 2 deletions packages/ember-metal/lib/assign.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
@public
*/
export default function assign(original, ...args) {
for (let i = 0, l = args.length; i < l; i++) {
for (let i = 0; i < args.length; i++) {
let arg = args[i];
if (!arg) { continue; }

let updates = Object.keys(arg);

for (let i = 0, l = updates.length; i < l; i++) {
for (let i = 0; i < updates.length; i++) {
let prop = updates[i];
original[prop] = arg[prop];
}
Expand Down
8 changes: 4 additions & 4 deletions packages/ember-metal/lib/chains.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ ChainWatchers.prototype = {
remove(key, node) {
let nodes = this.chains[key];
if (nodes) {
for (var i = 0, l = nodes.length; i < l; i++) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i] === node) {
nodes.splice(i, 1);
break;
Expand All @@ -49,7 +49,7 @@ ChainWatchers.prototype = {
has(key, node) {
let nodes = this.chains[key];
if (nodes) {
for (var i = 0, l = nodes.length; i < l; i++) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i] === node) {
return true;
}
Expand Down Expand Up @@ -85,7 +85,7 @@ ChainWatchers.prototype = {
affected = [];
}

for (let i = 0, l = nodes.length; i < l; i++) {
for (let i = 0; i < nodes.length; i++) {
nodes[i].notify(revalidate, affected);
}

Expand All @@ -94,7 +94,7 @@ ChainWatchers.prototype = {
}

// we gather callbacks so we don't notify them during revalidation
for (let i = 0, l = affected.length; i < l; i += 2) {
for (let i = 0; i < affected.length; i += 2) {
let obj = affected[i];
let path = affected[i + 1];
callback(obj, path);
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-metal/lib/computed.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ ComputedPropertyPrototype.property = function() {
};

args = [];
for (var i = 0, l = arguments.length; i < l; i++) {
for (var i = 0; i < arguments.length; i++) {
expandProperties(arguments[i], addArg);
}

Expand Down
8 changes: 4 additions & 4 deletions packages/ember-metal/lib/dependent_keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ import {
export function addDependentKeys(desc, obj, keyName, meta) {
// the descriptor has a list of dependent keys, so
// add all of its dependent keys.
var idx, len, depKey;
var idx, depKey;
var depKeys = desc._dependentKeys;
if (!depKeys) {
return;
}

for (idx = 0, len = depKeys.length; idx < len; idx++) {
for (idx = 0; idx < depKeys.length; idx++) {
depKey = depKeys[idx];
// Increment the number of times depKey depends on keyName.
meta.writeDeps(depKey, keyName, (meta.peekDeps(depKey, keyName)|| 0) + 1);
Expand All @@ -38,12 +38,12 @@ export function removeDependentKeys(desc, obj, keyName, meta) {
// the descriptor has a list of dependent keys, so
// remove all of its dependent keys.
var depKeys = desc._dependentKeys;
var idx, len, depKey;
var idx, depKey;
if (!depKeys) {
return;
}

for (idx = 0, len = depKeys.length; idx < len; idx++) {
for (idx = 0; idx < depKeys.length; idx++) {
depKey = depKeys[idx];
// Decrement the number of times depKey depends on keyName.
meta.writeDeps(depKey, keyName, (meta.peekDeps(depKey, keyName) || 0) - 1);
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-metal/lib/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ export function listenersFor(obj, eventName) {

if (!actions) { return ret; }

for (var i = 0, l = actions.length; i < l; i += 3) {
for (var i = 0; i < actions.length; i += 3) {
var target = actions[i];
var method = actions[i + 1];
ret.push([target, method]);
Expand Down
2 changes: 1 addition & 1 deletion packages/ember-metal/lib/get_properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export default function getProperties(obj) {
i = 0;
propertyNames = arguments[1];
}
for (var len = propertyNames.length; i < len; i++) {
for (; i < propertyNames.length; i++) {
ret[propertyNames[i]] = get(obj, propertyNames[i]);
}
return ret;
Expand Down
15 changes: 7 additions & 8 deletions packages/ember-metal/lib/instrumentation.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ var populateListeners = function(name) {
var listeners = [];
var subscriber;

for (var i = 0, l = subscribers.length; i < l; i++) {
for (var i = 0; i < subscribers.length; i++) {
subscriber = subscribers[i];
if (subscriber.regex.test(name)) {
listeners.push(subscriber.object);
Expand Down Expand Up @@ -137,19 +137,18 @@ export function _instrumentStart(name, _payload) {
console.time(timeName);
}

var l = listeners.length;
var beforeValues = new Array(l);
var beforeValues = new Array(listeners.length);
var i, listener;
var timestamp = time();
for (i = 0; i < l; i++) {
for (i = 0; i < listeners.length; i++) {
listener = listeners[i];
beforeValues[i] = listener.before(name, timestamp, payload);
}

return function _instrumentEnd() {
var i, l, listener;
var i, listener;
var timestamp = time();
for (i = 0, l = listeners.length; i < l; i++) {
for (i = 0; i < listeners.length; i++) {
listener = listeners[i];
listener.after(name, timestamp, payload, beforeValues[i]);
}
Expand Down Expand Up @@ -177,7 +176,7 @@ export function subscribe(pattern, object) {
var path;
var regex = [];

for (var i = 0, l = paths.length; i < l; i++) {
for (var i = 0; i < paths.length; i++) {
path = paths[i];
if (path === '*') {
regex.push('[^\\.]*');
Expand Down Expand Up @@ -213,7 +212,7 @@ export function subscribe(pattern, object) {
export function unsubscribe(subscriber) {
var index;

for (var i = 0, l = subscribers.length; i < l; i++) {
for (var i = 0; i < subscribers.length; i++) {
if (subscribers[i] === subscriber) {
index = i;
}
Expand Down
6 changes: 2 additions & 4 deletions packages/ember-metal/lib/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,9 @@ OrderedSet.prototype = {
if (this.size === 0) { return; }

var list = this.list;
var length = arguments.length;
var i;

if (length === 2) {
if (arguments.length === 2) {
for (i = 0; i < list.length; i++) {
fn.call(arguments[1], list[i]);
}
Expand Down Expand Up @@ -382,11 +381,10 @@ Map.prototype = {

if (this.size === 0) { return; }

var length = arguments.length;
var map = this;
var cb, thisArg;

if (length === 2) {
if (arguments.length === 2) {
thisArg = arguments[1];
cb = function(key) {
callback.call(thisArg, map.get(key), key, map);
Expand Down
3 changes: 1 addition & 2 deletions packages/ember-metal/lib/merge.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,8 @@ export default function merge(original, updates) {

var props = Object.keys(updates);
var prop;
var length = props.length;

for (var i = 0; i < length; i++) {
for (var i = 0; i < props.length; i++) {
prop = props[i];
original[prop] = updates[prop];
}
Expand Down
Loading

0 comments on commit b2c9e1c

Please sign in to comment.