Опасности пропуска точек с запятой.
Это:
let total = 0
['mon', 'tue'].forEach(day => {
будет трактоваться следующим образом:
let total = 0['mon', 'tue'].forEach(day => {
Часть 0[...]
будетрассматривается как попытка доступа к свойству со значением 0
.Попробуйте запустить этот пример в консоли браузера:
0['toFixed'](2)
Это просто способ вызова метода toFixed
для значения 0
с передачей аргумента 2.
ЗапятаяОператорская часть ошибки относится к разделу 'mon', 'tue'
.Попробуйте набрать это в своей консоли:
'mon', 'tue'
Хотя оператор запятой подобный редко используется, вы должны обнаружить, что он вычисляется до последнего значения, поэтому 'tue'
в этом случае.Итак, используя мой предыдущий пример, он выглядит примерно так:
0['toString', 'toFixed'](2)
Здесь toString
фактически игнорируется и просто вызывает toFixed
, как в моем предыдущем примере.Линтеры будут проверять такое использование запятых, поскольку они почти всегда являются результатом неверной интерпретации запятой.Как и в вашем случае, обычно предполагается, что он является разделителем в массиве, а не оператором запятой.
Итак, вернемся к вашему коду:
let total = 0
['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'].forEach(day => {
будет пытаться получить доступ к 'sun'
свойство значения 0
, которое будет undefined
.Затем он попытается вызвать метод forEach
для undefined
, что приведет к ошибке.
Таким образом, пока ваш код верен, он не будет работать должным образом.Линтер замечает эти ошибки и пытается помочь вам исправить их.
Самое простое решение - вставить точку с запятой.
Это предупреждение:
Ожидаемые круглые скобки вокруг аргумента функции стрелки, имеющие тело с фигурными скобками
- это всего лишь правило ограничения.Ожидается, что вы напишите .forEach(day => {
как .forEach((day) => {
.С точки зрения корректности в коде нет ничего плохого, на самом деле это всего лишь линтер, навязывающий предпочтения стиля кода.