【问题标题】:'number' is never reassigned. Use 'const' instead. (prefer-const)'number' 永远不会被重新分配。请改用“常量”。 (首选常量)
【发布时间】:2018-07-20 07:31:48
【问题描述】:

为什么在这种情况下 eslint 4.17.0 我有错误号永远不会重新分配。请改用“常量”。 (首选常量)。为什么我需要使用 const?请解释一下,我看不懂。

let test = {
    'number': 1,
    'string': 'asd',
};
test.number = 99;

console.log(test.number);
// output: 99

ecmascript

 {
    "parser": "babel-eslint",
    "env": {
        "browser": true
    },
    "extends": [
        "google"
    ],
    "rules": {
        "prefer-const": 2

    },
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module"
    }
}

eslint 问题

[eslint] 'test' is never reassigned. Use 'const' insted. (prefer-const)

【问题讨论】:

  • 1.向我们展示您的 lint 规则。 2. 显示准确的错误信息。
  • 这是因为test没有改变。您正在更改 test.number,而不是 test
  • 另外,您的错误信息与您的问题标题不匹配。一个说test(正确)标题说“数字”,它已更改并且不在警告中。

标签: javascript constants let eslintrc


【解决方案1】:

ES6 const 并不表示一个值是“恒定的”或不可变的。一种 const 值绝对可以改变。以下是完全有效的 不抛出异常的 ES6 代码。

const foo = {};
foo.bar = 42;
console.log(foo.bar);
// → 42

在您的情况下,如果您知道要更改属性,请尝试使用 let。

看这里:https://mathiasbynens.be/notes/es6-const

【讨论】:

  • 我的错误例子是 leth,为什么 eslint 警告我需要 const?
  • @Oto_Shan 因为let 假定变量值将在执行的某个点发生更改,而在您的示例中没有发生。
【解决方案2】:

来自 ESlint Docs:

如果从不修改变量,则使用 const 声明会更好。 Const 声明告诉读者,“这个变量永远不会 修改,”减少认知负担并提高可维护性。

        /*eslint prefer-const: 2*/
/*eslint-env es6*/

let a = 3;               /*error 'a' is never modified, use 'const' instead.*/
console.log(a);

// `i` is re-defined (not modified) on each loop step.
for (let i in [1,2,3]) {  /*error 'i' is never modified, use 'const' instead.*/
    console.log(i);
}

// `a` is re-defined (not modified) on each loop step.
for (let a of [1,2,3]) { /*error 'a' is never modified, use 'const' instead.*/
    console.log(a);
}

【讨论】:

    猜你喜欢
    • 2020-02-23
    • 2020-05-27
    • 1970-01-01
    • 2021-09-11
    • 2020-10-27
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多