Точка с запятой перед квадратной скобкой
Может ли кто-нибудь сказать мне, почему формат пряжи добавляет точку с запятой перед квадратными скобками. Без него пряжу не построить..
;[
this.querySelector('[class$="-cover"] img'),
this.querySelector('.FullscreenCarousel-cover-count')
].forEach(item => {
// actions
})
})
2 ответа
Рассмотрим следующий (базовый) код:
doSomething()
[1].forEach(i => doAnotherThing(i))
При таком прочтении это выглядит просто - вызовите какую-нибудь функцию, а затем переберите массив и вызовите другую функцию. Два отдельных шага.
Однако JS не смотрит на пробелы. Что, если бы вы увидели такой код:
doSomething()[1].forEach(i => doAnotherThing(i))
Что это теперь значит? Теперь похоже нужно позвонитьdoSomething()
который возвращает массив, возьмите элемент 1 этого массива, и, надеюсь , это массив, потому что мы повторяем его.
В отличие от:
doSomething();[1].forEach(i => doAnotherThing(i))
Что также сжимает пробелы, но теперь ясно, что вы имеете в виду, что это два совершенно разных шага. Основная причина, по которой ставится такая точка с запятой, - это прояснить ваши намерения.
console.log('First line')
['a', 'b', 'c'].forEach((element) => console.log(element))
console.log('Third line')
- 1: , затем напечатайте в новой строке и, наконец, напечатайте в следующей строке
- 2:
First line
, затем распечатайтеa, b, c
в первой строке и напечататьThird line
как следующая строка - 3: Ошибка отсутствия точки с запятой
- 4: Невозможно прочитать свойства undefined
##### Ответ: 4
Когда JavaScript встречает разрыв строки без точки с запятой, синтаксический анализатор JavaScript автоматически добавит точку с запятой на основе набора правил, называемыхAutomatic Semicolon Insertion
который определяет, будет ли разрыв строки в конце оператора или нет для вставки точки с запятой. Но он не предполагает точку с запятой перед квадратными скобками [...]. Таким образом, первые две строки считаются одним оператором, как показано ниже.
console.log('First line')['a', 'b', 'c'].forEach((element) => console.log(element))
Следовательно, будет невозможно прочитать свойства неопределенной ошибки при применении квадратной скобки массива к функции журнала.