У меня есть два выражения, и я хотел бы знать, какое из них лучше с точки зрения производительности.
1 if (typeof a !== "undefined") {}
2 if (a) {}
(Я не уверен, как называется второе выражение, поэтому я называю его голый, если в заголовке вопроса, не стесняйтесь поправлять меня, если вы знаете правильный термин для этого)
Я понимаю, что два выражения приведут к тому, что true будет находиться в совершенно разных условиях. Меня это не интересует, меня интересует только производительность.
Также я понимаю, что разница в производительности может кому-то показаться незначительной. Но все равно мне это интересно.
С моей точки зрения они оба хорошо читаются. Для моего случая они оба применимы. Теперь мне нужно дать оценку производительности одному из двух вариантов. Точка решит, какой подход я буду всегда использовать в будущем, если оба они подходят.
Спасибо.
@ Пойнти, спасибо. Я обновил свой вопрос.
Как часто это происходит, если его казнят? Один раз, 10 раз, 1 миллион раз? Даже если один из них в десять раз медленнее другого, имеет ли это значение?
И вы не можете (особенно в JS) утверждать производительность одного оператора без его окружения
@JonasWilms, вы имеете в виду, что производительность двух опций зависит от кода, который был выполнен до и который будет выполняться после? Спасибо.
@ Бармар, я уверен, что мое желание, чтобы мой выбор из двух вариантов был объяснен и оказался хорошим выбором, не является корнем зла. Спасибо.
@Barmar, самое главное здесь не оптимизировать. Мое намерение состоит в том, чтобы принять правильное решение, и я хочу сделать это с помощью оптимизации. Так что тут оптимизация не результат, а инструмент. Спасибо.
Это неправильная идея. Пишите код максимально понятным образом, не слишком беспокойтесь о производительности. Если вы обнаружите, что ваше решение работает слишком медленно, вы оптимизируете его. Разница в этом случае будет незначительна в 99% приложений.
@ Бармар, как я уже упоминал в своем вопросе From my pov they both are readable well.. Спасибо.
Затем вам следует подумать о том, какой из них лучше всего представляет логику, на благо других читателей.
@ Бармар, это хороший момент. Спасибо. Но мне все равно интересно узнать ответ на свой вопрос.
Используйте № 2, он менее подробный.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Существенной разницы в производительности нет, но есть большая разница в семантике; другими словами, они делают существенно разные вещи. Для вашего приложения это может иметь значение, а может и не иметь.