Первый выполняет незадействованный расчет побитового, который имеет побочный эффект запуска функции только, если она существует. Это имеет тот же результат, что и второй, и выглядит впечатляюще, но это похоже на использование карандаша для приготовления кофе, когда у вас есть ложка перед вами.
Существует больше кодирования, чем «умный». Лично я бы сказал, что для ввода второй версии требуется всего лишь немного времени, но она более читаема, легче отлаживается или помещается в точку останова и проще масштабируется, когда вы понимаете, что хотите добавить другую команду после оператора if.
Пока вы и все, используя свой код, знаете, почему первый вариант имеет тот же результат, что и второй, тогда это ваш выбор. Но я потерял счет количества раз, когда я сделал умный бит стенографии, а затем должен был превратить его в старомодное, если бы заявление в течение нескольких минут, чтобы понять, почему он не стреляет правильно.
Я думаю, что первый пример недостаточно ясен. Если другой разработчик прочитает ваш код, во втором варианте будет проще. –
Все функции в JavaScript являются объектами первого класса, поэтому они являются экземпляром 'Object', который под обложками является экземпляром' Function'. Так что достаточно честно проверить 'typeof' или' this.functions.SomeFunction instanceof Object' или 'this.functions.SomeFunction instanceof Function' было бы лучше. – Rohit416
Основываясь на мысли «что, черт возьми, что-то, кроме функции, будет делать в' this.functions', я бы безопасно сделал первый. Если я все еще в конечном итоге что-то взорваюсь на моем лице, это определенно не оператор '&&'. – Redu