Есть ли побочный эффект (неблагоприятный эффект) при использовании неявного оператора return в функции стрелки, использующей логический оператор AND &&?
Да, есть пара:
Опасность технического обслуживания, которую вы отмечаете в своем вопросе: если fn(val)
возвращает ложное значение, то значение , а не val
, будет тем, что возвращает функция стрелки,Кто-то, редактирующий логику fn
, вряд ли узнает, что код в другом месте предполагает, что он всегда возвращает истинное значение.
Другая опасность обслуживания заключается в том, что добавление еще одного вызова или другой логики к стрелкеФункция более сложна, если для этого нужно выделить &&
выражение.
Субъективно, такое может быть сложнее для чтения, особенно если учесть, что *Значение 1023 * имеет значение не только для того, чтобы избежать написания return
.
Вы можете обратиться к # 1, используя (или некоторые скажут ab , используя) оператор запятой :
const tap = fn => val => (fn(val), val);
Я не рекомендую, просто отмечая, что это вариант.Оператор запятой оценивает свой левый операнд, отбрасывает этот результат, вычисляет свой правый операнд и принимает этот результат в качестве своего результата.Вам нужно ()
вокруг выражения при использовании выражения запятой в качестве краткого тела со стрелкой, поскольку в противном случае краткое тело заканчивается запятой.Это означает, что единственное, что вы сохраняете, это слово return
.
Это может включать проблемы с упаковщиками или с оптимизаторами, удаляющими код
Только если эти упаковщикиили оптимизаторы имели ошибки в них.Их работа - правильно понимать код.Краткие тела стрелок не выходят за рамки этого права.
Но если говорить об инструментах: в общем, я предлагаю написать ваш код как ясно , насколько это возможно.Оставьте процесс создания как краткое , насколько это возможно, для minifiers.