И еще про синтаксис 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.

blog comments powered by Disqus