Посмотрите на документацию для Array.prototype.map
: ее подпись:
arr.map(function callback(currentValue[, index[, array]]) {...} [, thisArg])
И это именно то, что отражено во встроенной вами функции, только что выраженной во внутренней нотации V8.
receiver
- получатель вызова, т.е. массив, который вы вызываете .map
on, arr
в примере MDN.
callbackfn
- функция обратного вызова,callback
, как MDN вызывает его.
this_arg
является необязательным thisArg
, как MDN вызывает его.
Тот факт, что callbackfn
считается необязательным в этом коде, не отражает(и не нужно отражать) спецификацию;это просто самый удобный способ безопасно обработать случай, когда пользователь не передал функцию обратного вызова. Важное значение имеет результирующее поведение, которое заключается в том, что TypeError
генерируется, когда callbackfn
не вызывается или отсутствует (что является особым случаем «не вызывается», поскольку отсутствующие параметры не определены, а undefined не является функцией).