если условие на узле JS - PullRequest
       4

если условие на узле JS

0 голосов
/ 16 февраля 2019

Я запутался

Я пытался иметь два условия, в первом коде я получаю true ответ, кажется, ответ должен быть false.

var a = 'route 3';
if(a === 'route 1' || 'route 2'){
  console.log('true')
}else{
  console.log('false')
}

во втором коде у меня есть два условия, и первое условие кажется true, а второе должно быть false, но я получаю true ответ.Исходя из моего понимания, если первое условие false, второе условие не будет оцениваться.Можете ли вы просветить мой разум новичка, почему я получаю true ответ.

var a = 'route 1';
var b = 'route 3';

if(a === 'route 1' || 'route 2' && b === 'route 1' || 'route 2'){
  console.log('true')
}else{
  console.log('false')
}

спасибо за ответ :)

Ответы [ 4 ]

0 голосов
/ 16 февраля 2019

Проблема:

'route2' возвращает true, потому что нет сравнения, т.е.a === 'route2' строка всегда будет возвращать true

Решение:

var a = 'route 3';
if(a === 'route 1' || a === 'route 2'){
  console.log('true')
}else{
  console.log('false')
}
0 голосов
/ 16 февраля 2019

Изменение вашего первого блока кода на это решит вашу проблему:

var a = 'route 3';
if(a === 'route 1' || a === 'route 2'){
  console.log('true')
}else{
  console.log('false')
}

The ||Оператор работает не так, как вы думаете.Что вы говорите: a равно route 1?||route 2 ... (вместо: равно маршруту 2).То же самое относится и ко второму примеру:

var a = 'route 1';
var b = 'route 3';

if(a === 'route 1' || a === 'route 2' && b === 'route 1' || b === 'route 2'){
  console.log('true')
}else{
  console.log('false')
}

Еще об операторах: Операторы Javascript

0 голосов
/ 16 февраля 2019

В этом утверждении

if(a === 'route 1' || 'route 2' && b === 'route 1' || 'route 2')

часть, которая говорит || 'route 2'), всегда будет иметь значение true.

это должно быть if(a === 'route 1' || (a === 'route 2' && b === 'route 1') || a === 'route 2')

, когда вы оцениваете if('route 2'), который проверяет значение, которое всегда оценивается как trueВы бы сравнили это с чем-то.

0 голосов
/ 16 февраля 2019

Вы забыли проверить, равен ли «маршрут 2», когда вы просто делаете if('route 2').После использования || вам все равно нужно явно определить следующее условие, которое представляет собой === 'маршрут 2'.

Вместо этого используйте:

var a = 'route 3';
if(a === 'route 1' || a === 'route 2'){
  console.log('true')
}else{
  console.log('false')
}

Или еще более кратко:

var a = 'route 3';
console.log(a === 'route 1' || a === 'route 2');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...