Что является общим, так это то, что оба утверждения IF из вашего примера неясны, и было бы полезно их экстернализовать либо с помощью правильной переменной, объясняющей их значение, либо с адекватно названным методом.
В основном это разные конструкции.Первый использует вложенный оператор IF.Второй - предварительная оценка вложенного оператора IF.
Первая конструкция может охватывать 2 сценария.1) middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) != featuredTabIndex)
2) when middleOfTabIndicator < index * tabIndicatorWidth && ((index - 1) == featuredTabIndex)
В то время как вторая конструкция может охватывать только один сценарий:
middleOfTabIndicator < index * tabIndicatorWidth & ((index - 1) != featuredTabIndex)
В каком-то смысле конструкция № 1 является более выразительной и охватывает больше случаев, чемпостроить номер два.Но в то же время вы можете сжать конструкцию № 1 без вложенного IF следующим образом:
if ((middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) != featuredTabIndex)) {
// Do something
}
else if (middleOfTabIndicator < index * tabIndicatorWidth) && ((index - 1) == featuredTabIndex)) {
}
Теперь у вас такое же поведение, как у конструкции № 1 без вложенности.