eslint показывает неожиданное использование запятой, отсутствие последовательностей для массива

#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 .