* Flags a <code>catch</code> clause's variable that shadows a variable declared in an outer scope. (In IE8 this [weblog.bocoup.com/the-catch-with-try-catch/ causes the outer variable to be overwritten]).

+

* Flags a <code>catch</code> clause's variable that shadows a variable declared in an outer scope. (In IE8 this [http://weblog.bocoup.com/the-catch-with-try-catch/ causes the outer variable to be overwritten]).

| Flags calls to the string-argument form of <code>setTimeout</code> and <code>setInterval</code>, which implicitly perform <code>eval</code>.

+

| Flags calls to the string-argument form of <code>setTimeout</code> and <code>setInterval</code>, which implicitly perform <code>eval</code>. This rule logic was merged to be part of the <b>no-eval</b> rule.

Do not wrap function literals in parens unless they are to be immediately invoked.

Flags a parenthesized function literal that is not immediately invoked, eg. (function fun(){})

object-prototype-external

Warning

-

Flags calls to methods of Object.prototype that rely on the prototype chain. For example this code should be flagged:

foo.hasOwnProperty("bar")

Example (1) is unsafe, as foo may have a property named hasOwnProperty, or have been constructed via Object.create(null).

As for this:

Object.hasOwnProperty.call(foo,"bar")

Example (2) technically relies on the prototype chain as well: the hasOwnProperty method is defined on Object.prototype, not Object. Object inherits the methods of Object.prototype through its prototype chain. However (2) is unlikely to fail, as sane JavaScript programs will not modify the global objects' prototypes. If we choose to flag (2), it should only be for style.