2013-09-12 3 views
0

Я хотел бы, чтобы элегантный способ выполнять функцию только в том случае, если выполнено какое-либо условие. Два варианта, о которых я знаю, - это условия и третичный оператор.Есть ли способ условно вызывать функцию с одной строкой JavaScript?

если

if(headerExists($listview) === false) 
     addHeader($listview, template); 

третичной

headerExists($listview) ? null : addHeader($listview); 

Для меня, если делает логику немного сложнее понять, когда вы посмотрите на функцию в целом. Третичная функция кажется умной, но вы никогда ее нигде не видите, и необходимость объявлять null - это явно потерянное пространство.

+0

Я использую тройное множество раз в проекте, в котором я сейчас живу. Он очень сжат и экономит место. До тех пор, пока вы понимаете свой код и он работает, почему бы и нет? – McPhelpsius

ответ

2

Третий вариант заключается в (аб) использовать short-circuit behaviour в logical operators:

!headerExists($listview) && addHeader($listview, template); 
// or 
headerExists($listview) || addHeader($listview, template); 

Однако, это лишь метод минификация (который не может даже сделать код намного короче). Используйте if-statement для удобства чтения, если хотите, без блока и в одной строке:

if (!headerExists($listview)) addHeader($listview, template); 
+0

Ах, идиомы ... Это как Нью-Йоркер JavaScript – McPhelpsius

Смежные вопросы