Как это работает
@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