1019 (p &&
1020 ((i =
1021 (o = a[k] || (a[k] = {}))[a.uniqueID] ||
1022 (o[a.uniqueID] = {}))[h] = [S, d]), 1023 a !== e));
1024
1025 );
1016 ? a.nodeName.toLowerCase() !== f
1017 : a.nodeType !== 1) ||
1018 !++d ||
1019 (p && 1020 ((i =
1021 (o = a[k] || (a[k] = {}))[a.uniqueID] ||
1022 (o[a.uniqueID] = {}))[h] = [S, d]),
Variables in a loop condition often are modified in the loop. If not, it's possibly a mistake.
while (node) {
doSomething(node);
}
node = other;
for (var j = 0; j < items.length; ++i) {
doSomething(items[j]);
}
while (node !== root) {
doSomething(node);
}
while (node) {
doSomething(node);
node = node.parent;
}
for (var j = 0; j < items.length; ++j) {
doSomething(items[j]);
}
// OK, the result of this binary expression is changed in this loop.
while (node !== root) {
doSomething(node);
node = node.parent;
}
// OK, the result of this ternary expression is changed in this loop.
while (node ? A : B) {
doSomething(node);
node = node.parent;
}
// A property might be a getter which has side effect...
// Or "doSomething" can modify "obj.foo".
while (obj.foo) {
doSomething(obj);
}
// A function call can return various values.
while (check(obj)) {
doSomething(obj);
}