Javascript 为什么ESLint会对未使用的变量发出警告,该变量为';用过什么?

Javascript 为什么ESLint会对未使用的变量发出警告,该变量为';用过什么?,javascript,ecmascript-6,scope,Javascript,Ecmascript 6,Scope,我已经写了大约2个月的React&ES6代码了。我不确定我是不是遇到了这个问题,还是今天早上我的大脑冻结了 做了一些研究,并在const和let上找到了一堆文章,但没有任何内容涉及到这一点。我一直在读到,您不再需要使用var,那么您将如何处理这种情况 function () { let variable = null; if (condition) { variable = 'hello world'; } console.log(variable); // want

我已经写了大约2个月的React&ES6代码了。我不确定我是不是遇到了这个问题,还是今天早上我的大脑冻结了

做了一些研究,并在
const
let
上找到了一堆文章,但没有任何内容涉及到这一点。我一直在读到,您不再需要使用
var
,那么您将如何处理这种情况

function () {
  let variable = null;

  if (condition) {
    variable = 'hello world';
  }

  console.log(variable); // want 'hello world' if condition
}
编辑:请假定正在调用函数&条件为
true

我看到代码在这些条件下工作,但我的困惑是:在我引用控制台日志中的变量之前,我的ESlint报告
[ESlint]:“variable”被分配了一个值,但从未使用过

它不是正在被使用吗?

通过“使用它”,ESLint指的是实际地将它用于某种用途。就ESLint而言,简单地在其中添加一个值并不意味着使用它

永远不会访问其值的变量没有任何用途。

因此它是一个eslint规则:

如果您不熟悉eslint的工作:

它的目标是为JavaScript提供一个可插入的linting实用程序

如果您认为要删除此规则,可以将此行添加到.eslintrc

nikko:cms-v3 nikko$ cat .eslintrc.json
{
  "rules": {
    ...
    "no-unused-vars": "off", // add this
它不是被使用了吗

函数是否被调用并不重要,如果eslint看到您在该范围内定义了一个变量,但您从未使用过该变量,它将抛出该错误。您所做的是重新定义变量,而不是使用它


let变量
需要被某些进程以某种方式使用

为什么不
if(condition)console.log('hello world')
?您的代码很好。它记录
null
hello world
。有什么问题吗?@bot19你能帮助我们了解问题是什么吗?从我们可以看出,这段代码与使用
var
声明变量没有什么不同。您没有告诉我们的情况是什么?那么,这是一个ESLint问题?@bot19您问题中的关键短语是“在我引用控制台日志中的变量之前”。ESLint认识到您执行了一些逻辑并将结果存储在未使用的变量中,因此它指出您要么需要返回它,要么根本不使用变量。