I use jslint to validate my JavaScript before it goes out to production. The tool is somewhat useful, but you really have to spend some time ignoring all the false errors it flags. In some cases you can take its suggestions, while in others you can ignore them with no ill effects.
In this particular case, I came across an error, where, if you follow the suggestions, your site will break.
My code looks like this:
if (!("performance" in window) || !window.performance) { return null; }
jslint complains saying:
Unexpected 'in'. Compare with undefined, or use the hasOwnProperty method instead.
This is very bad advice for the following reasons:
- Comparing with
undefined
will throw an exception on Firefox 31 if used inside an anonymous iframe. - Using
hasOwnProperty
will cause a false negative on IE 10 becausewindow.hasOwnProperty("performance")
is false even though IE supports the performance timing object.
So, the only course of action, is to use in
for this case.