Почему включает в себя () ведет себя так в js? - PullRequest
0 голосов
/ 25 февраля 2020
a=[1,2,3,4]
console.log(a.includes(4 || 5); //this yields true
console.log(a.includes(5 || 4); //this yields false

Почему функция включает в себя () ведет себя именно так?

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

includes принимает только одно значение. Вы можете подумать, что говорите, чтобы проверить две вещи, но это не так. Оператор || собирается сравнить два операнда и определить одно значение. Если левая сторона || равна "правдиво" , то это будет использоваться.

Вкратце: 4 || 5 ничем не отличается от 4 и 5 || 4 ничем не отличается от 5. Таким образом, ваша первая строка проверяет, включает ли a 4, а вторая проверяет, включает ли она 5.

Если вам нужно проверить несколько значений, либо вызов включает несколько раз, либо используйте другой метод как .find

const a = [1,2,3,4];
const element = a.find(val => val === 4 || val === 5);
const found = !!element; // turning it into true/false instead of 4/5/undefined
console.log(found);
0 голосов
/ 25 февраля 2020

a = [1,2,3,4]

console.log (a.includes (4 || 5)); // это дает true

4 || 5 будет выполнено первым. Результат 4

4 включен в a, а результат - true

console.log (a.include (5 || 4) ); // это приводит к ложному

5 || 4, в результате 5

5 не включается в a, и в результате получается false

Функция includes() ведет себя так, как и должна.


Полагаю, путаница связана с этой частью:

4 || 5 = 4

5 || 4 = 5

Например: X || Y

Если X не определено, результатом будет Y

Если X определено, результатом будет X

В обоих ваших примерах «X» определяется числом. Результат, как и ожидалось, первый номер.


Я надеюсь, что это было полезно:)

...