若JSHint遇到声明的变量名和内建的原生对象名称相同,就会抛出"Redefinition of '{a}'"错误。在下面这个例子中我们尝试着用String这个名称来声明一个对象:
这个错误是为了强调潜在的有问题的代码。你的代码如果不修改,可能在运行时不会出现错误,但是这会让其他人感到十分困惑,特别是那些乍眼一看的人们,并且这很可能会对第三方的脚本造成影响。
当然,你完全可以重新对任意的内置函数进行赋值或者重载,但是对于这种操作是有一定限制的。JSHint完全禁止进行这种操作,并且不提供任何参数去允许之。
"只读函数"的列表如下:
Array | Boolean | Date | decodeURI | decodeURIComponent | encodeURI | encodeURIComponent |
Error | eval | EvalError | Function | hasOwnProperty | isFinite | isNaN |
JSON | Map | Math | NaN | Number | Object | parseInt |
parseFloat | RangeError | ReferenceError | RegExp | Set | String | SyntaxError |
TypeError | URIError | WeakMap |
参见"Read only"错误以查看相关的更多的信息。注意JSLint定义了这个错误但是实际上从来没有使用过它。
在JSHint1.0.0及以上版本中,你可以使用一种特殊的语法选项.
这个警告的标示符是W079. 这也就意味着你可以通过/*jshint -W079 */
让JSHint不报告这个警告。