Он просто возвращает логическое значение от обратного вызова до reduce
. Результат выражения item === target
является булевым (то есть либо true
, либо false
). Это стенография и (IMO) более-элегантный способ сделать следующее:
if(item === target) {
return true;
} else {
return false;
}
===
«строгое равенство», что означает, что он не будет выполнять какое-либо тип-принуждение. Вот почему "2" == 2
вернет true
, потому что "2"
может быть введен в число 2
(и наоборот). Но "2" === 2
вернет false
, потому что он не выполняет никакого принуждения типа, и два аргумента имеют разные типы.
Функция reduce
работает путем итерации по каждому элементу в коллекции и вычисления какого-то значения, которое также используется в каждой итерации.
В ходе первоначального вызова функции reduce
, wasFound
установлен в false
(обратите внимание на false
, переданный в вызов reduce
после обратного вызова). Первый if
не будет удовлетворен, и поэтому функция выполнит оператор return
. Возвращаемое значение будет значение wasFound
в next Итерация.
Это означает, что до тех пор, как wasFound
является false
, мы будем стараться, чтобы увидеть, если следующий элемент соответствует тот, который был принят. Если это true
, то это означает, что мы нашли элемент, мы хотим и поэтому мы можем просто продолжайте возвращаться true
.
IMO функция немного неэффективна, потому что она не срабатывает раньше, как только она обнаружила элемент, который она ищет, и независимо от нее перемещается вся коллекция.
Что означает «test» === «test», или «test1» === «test2» возвращается в вашу консоль JS? – azium
Он возвращает логическое значение, равное ли «item» и «target». – Xufox