チェックに使った.jshintrcはこちら
.jshintrc日本語版 - Qiita
以下のリストはO'Reilly Japan - JavaScript 第6版#2.4.1 予約語より抜粋。
"Not error"とコメントされていないのは全て(正しく)エラーになっている。
example.js
// 予約語
var break = 1;
var delete = 1;
var function = 1;
var return = 1;
var typeof = 1;
var case = 1;
var do = 1;
var if = 1;
var switch = 1;
var var =1;
var catch = 1;
var else = 1;
var in = 1;
var this = 1;
var void = 1;
var continue = 1;
var false = 1;
var instanceof = 1;
var throw = 1;
var throw = 1;
var while = 1;
var debugger = 1; // Debug: trueなのにError
var finally = 1;
var new = 1;
var true = 1;
var with = 1;
var default = 1;
var for = 1;
var null = 1;
var try = 1;
// 将来に向けての予約語
var class = 1;
var const = 1;
var enum = 1;
var export = 1;
var extends = 1;
var import = 1;
var super = 1;
// strictモードでは予約語
var implements = 1;
var let = 1;
var private = 1;
var public = 1;
var yield = 1;
var interface = 1;
var package = 1;
var protected = 1;
var static = 1;
var arguments = 1;
var eval = 1;
// JAVAの予約語
var abstract = 1;
var double = 1;
var goto = 1;
var native = 1;
var static = 1;
var boolean = 1;
var enum = 1;
var implements = 1;
var package = 1;
var super = 1;
var byte = 1;
var export = 1;
var import = 1;
var private = 1;
var synchronized = 1;
var char = 1;
var extends = 1;
var int = 1;
var protected = 1;
var throws = 1;
var class = 1;
var final = 1;
var interface = 1;
var public = 1;
var transient = 1;
var const = 1;
var float = 1;
var long = 1;
var short = 1;
var volatile = 1;
// グローバル変数/関数
var arguments = 1;
var encodeURI = 1; // Not error
var Infinity = 1;
var Number = 1; // Not error
var RegExp = 1; // Not error
var Array = 1; // Not erro
var encodeURIComponent = 1; // Not error
var isFinite = 1; // Not error
var Object = 1; // Not error
var String = 1; // Not error
var Boolean = 1; // Not error
var Error = 1; // Not error
var isNan = 1; // Not error
var parseFloat = 1; // Not error
var SyntaxError = 1; // Not error
var Date = 1; // Not Error
var eval = 1;
var JSON = 1; // Not Error
var parseInt = 1; // Not Error
var TypeError = 1; // Not Error
var decodeURI = 1; // Not Error
var EvalError = 1; // Not Error
var Math = 1; // Not Error
var RangeError = 1; // Not Error
var undefined = 1;
var decodeURIComponent = 1; // Not Error
var Function = 1; // Not Error
var NaN = 1; // Not Error
var ReferenceError = 1; // Not Error
var URIError = 1; // Not Error
結果
グローバル変数/関数がほとんどチェックされない
以下のようなのが通ってしまうのはどうしたものか。。
example.js
var encodeURI = 1;
encodeURI("a");
// NotError
debuggerのエラー抑制がされない
.jshintrcのdebugオプションをtrueにしてもエラーに。