Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CLEANUP] Don't cache length property in for loops #12744

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self note: This loop length should probably be cached.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On a second look, this shouldn't need to cache length as we break the loop on the next line, might be confusing though.

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