Unexpected global variable declaration should be avoided
- UNEXPECTED_GLOBAL_DECL
- Code Quality
- Medium
- No tags
This rule applies when global variable is unexpectedly declared.
Assigning a value to undeclared variable creates a new variable inside the global scope. Unexpectedly created global variables can cause memory leaks.
For example, unexpected global variables can be created in the following cases:
- Initialize a loop variable without declaration.
- Assign to an intermediate variable accessed only inside a loop without declaration.
- In the middle of variable declaration list, comma is missing or semicolon is inserted by mistake at the end of variable declaration.
Noncompliant Code Example
View with compliant examples side by side// Example 1
var b = [1, 2, 3];
for (a = 0 /* UNEXPECTED_GLOBAL_DECL alarm */; a < b.length; a++) {}
// Example 2
function foo(x) {
for (var i = 0; i < x.length; i++) {
bar = getBar(x[i]); // UNEXPECTED_GLOBAL_DECL alarm
doSomething(bar);
}
}
// Example 3
var c = 1,
d = 2
e = 3, // UNEXPECTED_GLOBAL_DECL alarm
f = 4; // UNEXPECTED_GLOBAL_DECL alarm
Compliant Code Example
View with noncompliant examples side by side// Example 1
var b = [1, 2, 3];
for (var a = 0; a < b.length; a++) {}
// Example 2
function foo(x) {
for (var i = 0; i < x.length; i++) {
var bar = getBar(x[i]);
doSomething(bar);
}
}
// Example 3
var c = 1,
d = 2,
e = 3,
f = 4;
Version
This rule was introduced in DeepScan 1.0.0-alpha.