title: JSLint complains about redefining undefined
body: <p><a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/undefined" rel="noreferrer"><code>undefined</code></a> is technically able to be redefined, so it is not a reserved word. As a result, I usually write code in an anonymous function that forces <code>undefined</code> to be an undefined variable, as so:</p>
  
  <pre><code>(function (undefined) {
      "use strict";
      var o = {
          test: "testvalue"
      };
      if (o.test === undefined) {
          // Do stuff here
      } else {
          // Do other stuff there
      }
  }());
  </code></pre>
  
  <p>However, <a href="http://www.jslint.com/" rel="noreferrer">JSLint</a> mentions the following error:</p>
  
  <pre class="lang-none prettyprint-override"><code>Problem at line 1 character 15: Expected an identifier and instead saw 'undefined' (a reserved word).
  </code></pre>
  
  <p>Why does JSLint complain about <code>undefined</code> being an reserved word, when code can arbitrarily redefine the variable? I know that you can use <code>typeof x === "undefined"</code>; I just wanted to see why this method wouldn't work.</p>