问题
Why in this case eslint 4.17.0 i have error number is never reassigned. Use 'const' instead. (prefer-const). Why i need to use const? Please, explain me i can't understand.
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 problem
[eslint] 'test' is never reassigned. Use 'const' insted. (prefer-const)
回答1:
ES6 const does not indicate that a value is ‘constant’ or immutable. A const value can definitely change. The following is perfectly valid ES6 code that does not throw an exception.
const foo = {};
foo.bar = 42;
console.log(foo.bar);
// → 42
In your case, if you know that you are gonna change the properties, try using let.
Take a look here: https://mathiasbynens.be/notes/es6-const
回答2:
From ESlint Docs:
If a variable is never modified, using the const declaration is better. Const declaration tells readers, “this variable is never modified,” reducing cognitive load and improving maintainability.
/*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);
}
来源:https://stackoverflow.com/questions/48707353/number-is-never-reassigned-use-const-instead-prefer-const