Насколько я ценю веб-документацию MDN и полагаюсь на нее, иногда объяснения немного загадочны или сбивают с толку, особенно их синтаксические формулы. Я нашел это особенно запутанным при просмотре документации по методу Array.prototype.reduce ().

Веб-документы MDN объясняют Array.prototype.reduce () несколькими способами с помощью слов, и это здорово. Но что, если вам нужен краткий справочник по методу сокращения? Взгляните на синтаксис, который веб-документация MDN предоставляет для reduce () в необработанном виде:

Хорошо. Так что я кое-что из этого понимаю. Я понимаю, что arr - это массив, а .reduce () - это метод. Но как насчет некоторых «вещей» внутри метода .reduce ()?

Что это за странные обозначения? На словах я называю это «скобка, запятая, имя параметра, скобка». Но что это значит?

В веб-документации MDN используется обозначение «скобка, запятая, имя параметра, скобка», например [, initialValue], чтобы указать, является ли параметр необязательным. Так, например, для показанного выше метода reduce () следующие параметры являются необязательными:

[, индекс]
[, массив]
[, начальное значение]

Еще одно замечание: здесь MDN группирует два необязательных параметра в обратном вызове, используя обозначение скобок, например: [, index [, array]].

Кроме того: ознакомьтесь с этой статьей, в которой объясняется разница между параметрами и аргументами в JavaScript.

Примеры

Позвольте мне показать вам лучший пример синтаксиса рядом с реальным примером, показанным в веб-документации MDN, чтобы помочь вам немного лучше понять это.

В этом примере необязательные параметры reduce () [, index [, array]] представлены как currentIndex и аргументы array соответственно:

Вот еще один пример метода reduce (), но на этот раз параметр
[, initialValue] предоставляется в качестве аргумента 10:

Надеюсь, это поможет кому-то другому!