Какой из них более эффективен тернарный оператор или однострочный ИФ? - PullRequest
0 голосов
/ 10 апреля 2020

Я сейчас переписываю код python в nodejs, и мне интересно, что более эффективно:

a = func1()
a = a ? a : func2()

или

a = func1()
if (!a) a = func2()

Первоначально , Я писал первый блок как:

a = func1() ? func1() : func2()

, но я думаю, что в конечном итоге это вызовет func1 () дважды, следовательно, сначала присваивая его переменной.

ПРИМЕЧАНИЕ: Я случайно разместил это на ServerFault. Спасибо cyberx86 (https://serverfault.com/users/86472/cyberx86) за то, что указал на это и сказал, что производительность незначительна. А также делает предложение:

a = func1() || func2()

ОБНОВЛЕНИЕ: Для программистов-новичков, таких как я, приведенная выше строка "короткое замыкание". То есть, если func1() возвращает true , нет необходимости оценивать возвращаемое значение func2()

1 Ответ

0 голосов
/ 10 апреля 2020

a = func1() || func2() должно быть то, что вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...