Я сейчас переписываю код 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()