Tengo el siguiente código y eslint sigue mostrando una advertencia no-sequences
.
const full = {}; ["firstname", "lastname", "spouse"].forEach(key => { }) ["cellphone", "phone"].forEach(key => { })
Aunque el error está en el segundo bloque forEach
, la advertencia solo aparece cuando coloco el primer bloque forEach
. ¿Es esto un error de eslint?
aquí está el enlace en el editor de demostración de eslint
Como su código no tiene punto y coma, básicamente está tratando de acceder a una matriz en el primer forEach
:
["firstname", "lastname", "spouse"].forEach(key => { })["cellphone", "phone"].forEach(key => { })
Por supuesto que esto no es correcto. Para solucionar este problema, simplemente agregue un punto y coma:
["firstname", "lastname", "spouse"].forEach(key => { }); // Add a semicolon here ["cellphone", "phone"].forEach(key => { }); // Here it is not necessary, but it is a good practice to avoid that kind of error
Esto corregirá el error porque los puntos y comas señalan el final de una declaración , por lo que ESLint podrá entender que hay dos declaraciones diferentes.
Le falta un punto y coma al final de la primera llamada forEach
, por lo que su código es equivalente a:
["firstname", "lastname", "spouse"].forEach(key => { })["cellphone", "phone"].forEach(key => {})
Eso es intentar obtener el valor de la propiedad "phone"
del valor de retorno de forEach
(que no está undefined
). []
se interpreta como una notación de corchetes en lugar de un literal de matriz debido a la inserción automática de punto y coma. ESLint señala el uso del operador coma en "cellphone", "phone"
, lo que resulta en intentar leer la propiedad "phone"
.
No sabía que el acceso al valor del objeto es en realidad multilínea.
const data = {"key":123} console.log( data ["key"] )
Aunque en una nueva línea, en realidad funcionaría e imprimiría los data["key"]
para imprimir 123
.