Javascript за десять минут: что происходит в этом примере кода, иллюстрирующем ленивую область видимости?

Я перечитал превосходный Javascript за десять минутСпенсера Типпинга и хоть убей меня, не могу понять, что происходит в этом примере использования ленивой области видимости для создания синтаксических макросов:

var f = function () {return $0 + $1};  
var g = eval (f.toString ().replace (/\$(\d+)/g,  
           function (_, digits) {return 'arguments[' + digits + ']'}));  
g(5,6); // => 11 (except on IE)

В частности,

  1. $0 и $1 заменяются определением функции — как вычисляется эта функция? (Предположительно с помощью eval(), но я этого не вижу).
  2. Какова цель единственного аргумента подчеркивания в функции? Если я уберу его, код перестанет работать. Предположительно это просто заполнитель, но зачем он нужен?

5
задан Joshua 22 February 2019 в 15:01
поделиться