Как это работает

Как это работает

@fl0pzz

Попробую пописать небольшой цикл статей - "Как это работает". Естественно, в первую очередь я пишу это для себя, поэтому от вас, я ожидаю услышать критику. Погнали!

В чате @pro.js.noobs поинтересовались, как работает конструкция (пример):

[conditions].some(Boolean)

Начнем по порядку.

Первое и самое важное это то, что внутрь метода .some() мы передаем не функцию, мы передаем ссылку на объект (в данном случае в качестве объекта мы передаем ссылку на функцию). Вы же помните что в js почти все есть объект?

Второе. Функция .some() принимает не просто объект, а callable object. Что относится к callable object в javascript? Согласно прекрасной книге exploringjs (читать обязательно, но это не базовый уровень) ими являются:

  • Фунции
  • Методы
  • Конструкторы

Наверное уже все догадались, что в нашем случае мы передаем ссылку на конструктор класса Boolean.

Теперь пару слов о самом массиве. Декларировали мы его как массив результатов выражений (левая часть), который после сравнений будет содержать в себе булевы значения (например, как в правой части):

[a === b, c === d, e === f] <=> [false, false, true]


Теперь, когда функция .some() будет итерироваться по массиву, для каждого его элемента будет вызываться переданная функция (в данном случае - конструктор Boolean):

Boolean(true) === true;
Boolean(false) === false;


Если не верите - https://repl.it/N18U

Хм, кажется все. Идеи и преложения @fl0pzz


Ссылки:
Пример с условием - https://repl.it/N1hf

Report Page