在官方文件应该给你如何解决这个问题的想法。
除非未在/*global ...*/
注释中明确提及该变量,或者globals
在配置文件的键中指定了该变量,否则任何对未声明变量的引用都将导致警告。
最简单的解决方法是添加
在文件的顶部。
或更佳的做法是,明确指定该变量为只读,以禁止覆盖该变量:
但是由于您必须为每个新的js文件执行此操作,因此它可能会令人讨厌。如果您经常使用下划线,建议您将全局变量添加到.eslintrc
文件中,例如:
{
"globals": {
"_": "readonly"
}
}
并将其另存为.eslintrc
项目根目录或用户主目录(可选)。虽然有人说不建议使用后者,但有时可能很方便,但您必须记住您已经在这里了:)
上述规则的解释:"_": "readonly"
(以前是"_": false
,现在已经过时)的装置,一个命名的变量_
告诉这个变量是全局定义的,它不会发出任何eslintno-undef
错误此变量。正如@sebastian指出的那样,"readonly"
(或false
不建议使用)表示该变量不能被覆盖,因此代码_ = 'something else'
将产生错误no-global-assign
。如果要改用"_": "writable"
(或"_": true
-已弃用),则意味着可以重新分配该值,并且不会发生前面提到的错误。
但是请记住,只有在直接分配给全局变量的情况下才会发生这种情况,如我在示例中所示。您仍然可以对其进行阴影处理,并保持沉默。例如,这些代码片段不会产生no-global-assign
:
const _ = 'haha I broke your _'
或作为函数参数名称,例如
function (_) {
console.log(_, 'might not be the _ you were looking for')
}
false
as禁止覆盖吗?