#javascript #eslint
Вопрос:
У меня есть следующий код, и eslint продолжает показывать no-sequences
предупреждение.
const full = {};
["firstname", "lastname", "spouse"].forEach(key => {
})
["cellphone", "phone"].forEach(key => {
})
Хотя ошибка находится во втором forEach
блоке, предупреждение появляется только тогда, когда я помещаю первый forEach
блок. это ошибка eslint?
вот ссылка на демонстрационный редактор eslint
Ответ №1:
Поскольку в вашем коде нет точки с запятой, вы в основном пытаетесь получить доступ к массиву в первом forEach
:
["firstname", "lastname", "spouse"].forEach(key => {
})["cellphone", "phone"].forEach(key => {
})
Конечно, это неверно. Чтобы устранить эту проблему, просто добавьте точку с запятой:
["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
Это исправит ошибку, поскольку точки с запятой указывают на конец инструкции, поэтому ESLint сможет понять, что существуют два разных оператора.
Ответ №2:
В конце первого вызова отсутствует точка с запятой forEach
, поэтому ваш код эквивалентен:
["firstname", "lastname", "spouse"].forEach(key => {
})["cellphone", "phone"].forEach(key => {})
Это попытка получить значение "phone"
свойства возвращаемого значения forEach
(которое равно undefined
). []
интерпретируется как обозначение в скобках вместо литерала массива из-за автоматической вставки точки с запятой. ESLint указывает на использование оператора запятой в "cellphone", "phone"
, что приводит к попытке прочитать "phone"
свойство.
Ответ №3:
Я не знал, что доступ к значению объекта на самом деле многострочный.
const data = {"key":123}
console.log(
data
["key"]
)
Хотя на новой строке, на самом деле будет работать и доступ data["key"]
к печати для печати 123
.