И еще про синтаксис JavaScript
Кто о чем, а вшивый о бане я о синтаксе в javascript.
Дело в том, что часто внутри функции нужно проверить, переданы ли правильные параметры и переданы ли вообще. Ну и вот один из самых коротких способов это сделать. Ничего фантастического тут нет, старый и проверенный способ. Кто может что сказать о достоинствах и недостатках этого метода?
1 function destroyTheWorld (when, byWhom) {
2 if (!when||!byWhom) return 'fuck off';
3 };
Если кто не знает, оператор логического отрицания ! в JavaScript вернет true если ему передан false, '' (пустая строка), 0, null, undefined. Во всех остальных случаях оператор логического отрицания вернет false. На всякий случай, проиллюстрирую:
!0 === !'' === !null === !undefined === !false === true;
Таким образом, если мы не передали никакого объекта или передали null, то функция завершит свою работу и вернет в качестве результата нехорошее слово.
Внимательные люди могут спросить — а что, если передать true? Функция завершит работу при вполне валидном параметре? Я могу на это ответить примерно так: если вы передаете в функцию булевую переменную, то почти наверняка эта переменная — рычаг, т.е. в зависимости от нее меняется поведение функции. И обработка аргументов, таким образом, будет вестить несколько другая. Скажем, такая:
1 function shouldWeDestroyTheWorld (acceptance) {
2 if (acceptance) {
3 World.getInstance().destroy();
4 } else {
5 World.getInstance().armageddon = 'stopped';
6 World.getInstance().destructionTimer.stop();
7 }
8 }
И если вы опустите этот аргумент, то по эффекту это будет равнозначно передачи false.