В настоящее время каждый пытается использовать такие функции высшего порядка, чтобы получить многообещающий результат при написании меньшего количества кода. Но мне интересно, как эти функции работают внутри.
Предположим, если я напишу что-то вроде
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Я знаю, что каждый элемент массива 'number' повторяется один за другим, но как ?
Я пытался найти его, но пока не получил удовлетворительного ответа.
map
которая была добавлена к типу Array. Эта функция принимает функцию в качестве параметра, который затем вызывается во время цикла по массиву. Возвращаемые значения вызовов функций затем возвращаются в массиве.Ответы:
.map
это просто метод, который принимает обратный вызов, вызывает обратный вызов для каждого элемента массива и присваивает значение новому массиву. В этом нет ничего особенного. Вы даже можете легко реализовать это самостоятельно:Чтобы быть полностью совместимым со спецификацией, вам также необходимо проверить, среди прочего, что
this
объект является объектом, которыйcallback
можно вызывать, и.call
обратный вызов со вторым параметром, передаваемым,myMap
если таковой имеется, но это детали не важно для начала понимания функций высшего порядка.источник
Я предполагаю, что каждый поставщик должен реализовать это согласно спецификации
Реальная реализация, например V8, может быть немного сложной, обратитесь к этому ответу для начала. Вы также можете ссылаться на источник v8 в github, но может быть нелегко понять только одну часть в изоляции.
Цитируемый сверху ответ:
ES2015 spec:
"length"
)).источник
<li>
list-style-type
не копируются ни в Chrome, ни в FF. Вы написали цифры вручную, или есть лучший метод, который я пропускаю?