Disallow Use of undefined Variable (no-undefined)
The undefined variable is unique in JavaScript because it is actually a property of the global object. As such, in ECMAScript 3 it was possible to overwrite the value of undefined. While ECMAScript 5 disallows overwriting undefined, it’s still possible to shadow undefined, such as:
function doSomething(data) {
    var undefined = "hi";
    // doesn't do what you think it does
    if (data === undefined) {
        // ...
    }
}
This represents a problem for undefined that doesn’t exist for null, which is a keyword and primitive value that can neither be overwritten nor shadowed.
All uninitialized variables automatically get the value of undefined:
var foo;
console.log(foo === undefined);     // true (assuming no shadowing)
For this reason, it’s not necessary to explicitly initialize a variable to undefined.
Taking all of this into account, some style guides forbid the use of undefined, recommending instead:
- Variables that should be 
undefinedare simply left uninitialized. - Checking if a value is 
undefinedshould be done withtypeof. - Using the 
voidoperator to generate the value ofundefinedif necessary. 
Examples
This rule aims to eliminate the use of undefined, and as such, generates a warning whenever it is used.
The following patterns are considered warnings:
var foo = undefined;
var undefined = "foo";
if (foo === undefined) {
    // ...
}
function foo(undefined) {
    // ...
}
The following patterns are not warnings:
var foo = void 0;
var Undefined = "foo";
if (typeof foo === "undefined") {
    // ...
}
global.undefined = "foo";
When Not To Use It
If you want to allow the use of undefined in your code, then you can safely turn this rule off.
Further Reading
- 
    
[undefined - JavaScript MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)  - 
    
[Understanding JavaScript’s ‘undefined’ JavaScript, JavaScript…](http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/)  - ECMA262 edition 5.1 §15.1.1.3: undefined
 
Related Rules
Version
This rule was introduced in ESLint 0.7.1.