2015-12-03 2 views
-2
if(something.food == true){ 
    if(something.food.fruit == 'apple' || something.food.fruit == 'mango'){ 
//do something 
} 
} 

это ясно, где еда должна быть правдой позже проверить, что это дочерний объект, но как записать это в одной строке? Я имею в виду с одним, если.вложенный оператор if в одной строке

+0

'если (something.food == верно && (something.food.fruit == 'яблоко' || something.food.fruit == 'манго')) { // делаем что-то } ' –

+2

Как вы думаете? Что вы пробовали? Что логика говорит вам? – devnull69

+0

Это все о неявном преобразовании. –

ответ

1

Если something.food - true, то это не может быть объект, содержащий поля. Хотя ваша текущая проверка действительно проверяет значение "truthy", она читается довольно странно (спасибо, что указали это T. J. Crowder). Вместо этого вы должны просто оставить часть == true.

В результате проверка:

if (something.food && (something.food.fruit == 'apple' || something.food.fruit == 'mango') { 
     //do something 
} 
+0

'== true' * * проверяет, действительно ли это« правдиво ». (Это глупый способ проверить, но ...) '=== true' не будет, но' == true'. –

+0

Вы правы, я изменю свой ответ, чтобы отразить это. Благодаря :) – MrHug

1

Это все

if(something.food && (something.food.fruit == 'apple' || something.food.fruit == 'mango')) { 

    //do something 

} 

В ходатайстве в комментариях, я объясню это.

Сначала мы проверяем something.food без == true, потому что нам нужно проверить, существует ли он. Затем заверните остальную часть кода в скобки и выражение будет работать нормально

+0

A * полезно * ответ * объясняет *, это не просто код дампа. –

+0

Этот код является самообучающимся. С 6 лет я изучаю в классе Maths порядок операций в скобках. Я могу объяснить, что я здесь делаю, но это примерно так, как объяснить, как говорить –

+0

Ответ отредактирован с пояснениями. Может быть, это не лучшее объяснение мира, но я не знаю, как объяснить эту простую вещь. –

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