Есть ли другой способ, которым я могу написать if, который я использую для установки значения javascript?

#javascript

#javascript

Вопрос:

Я использую это, но это выглядит не так ясно:

 if (!app.config.admin.examStatusId) {
  app.config.admin.examStatusId = exam.examStatus.dataPlus[0].id; 
}
 

Есть ли другой более понятный способ, которым я мог бы написать это без использования if ?

Комментарии:

1. Вы могли бы написать это как app.config.admin.examStatusId = app.config.admin.examStatusId | exam.examStatus.dataPlus[0].id; , но большая часть проблемы с ясностью связана с тем, что вы меняете глубокое свойство. В четко разработанной программе у вас, вероятно, будет переменная, значение которой будет app.config.admin .

2. Это так же ясно, как и для меня?

3. Переместите тело if на следующую строку, и это будет выглядеть просто отлично.

4. @adeneo как вы думаете, что следует сделать с этим вопросом?

5. @dystroy Вам не хватает еще одного | 😉

Ответ №1:

Вы могли бы записать это как

 app.config.admin.examStatusId = app.config.admin.examStatusId || exam.examStatus.dataPlus[0].id;
 

но у if вас тоже все в порядке. Большая часть проблемы с ясностью возникает из-за того, что вы изменяете глубокое свойство: в четко разработанной программе у вас, вероятно, будет переменная, значение которой будет app.config.admin . Редко приходится касаться удаленных подмодулей в программе.

Ответ №2:

 !app.config.admin.examStatusId ? app.config.admin.examStatusId = exam.examStatus.dataPlus[0].id : /*something else if it is false*/
 

Это сокращенный метод для if / else, называемый троичной логикой. Вы можете прочитать немного больше об этом здесь: http://davidwalsh.name/php-shorthand-if-else-ternary-operators

Ответ №3:

Вы можете попробовать это:

 app.config.admin.examStatusId = app.config.admin.examStatusId || exam.examStatus.dataPlus[0].id;