Сравнение прототипа объекта в javascript [duplicate]

Моим регулярным выражением является следующее:

/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/im

Допустимые форматы:

(123) 456-7890 (123)456-7890 123-456-7890 123.456.7890 1234567890 +31636363634 075-63546725

-2
задан NERDYLIZARD 16 February 2015 в 16:24
поделиться

3 ответа

Время для таблицы истинности ... Последние два столбца - это выражения, которые вы сравниваете

A       | B     | C     | A == B    | (A == B) == C | A == B && B == C
--------+-------+-------+-----------+---------------+-----------------
TRUE    | TRUE  | TRUE  | TRUE      | TRUE          | TRUE
TRUE    | TRUE  | FALSE | TRUE      | FALSE         | FALSE
TRUE    | FALSE | TRUE  | FALSE     | FALSE         | FALSE
TRUE    | FALSE | FALSE | FALSE     | TRUE          | FALSE
FALSE   | TRUE  | TRUE  | FALSE     | FALSE         | FALSE
FALSE   | TRUE  | FALSE | FALSE     | TRUE          | FALSE
FALSE   | FALSE | TRUE  | TRUE      | TRUE          | FALSE
FALSE   | FALSE | FALSE | TRUE      | FALSE         | TRUE

Нет! Они не то же самое.

1
ответ дан AlexFoxGill 16 August 2018 в 05:28
поделиться

То, что вы действительно ищете, вероятно,

if (a === b === c)

по сравнению с

if ((a === b) && (b === c) && (a === c))

И они не равны. Первый может быть скомпонован как:

if ((a === b) === c)

Который, если a и b равны, оценивает

if (true === c)

. Это не то же самое, что проверка, если все три равны .

3
ответ дан Nit 16 August 2018 в 05:28
поделиться
  • 1
    Заметим, что === транзитивен, поэтому (a === b) && (b === c) достаточно – Cimbali 16 February 2015 в 15:39
  • 2
    @Cimbali Хорошая мысль, я не думал об этом и слепо следовал стилю предлагаемого вопроса. – Nit 16 February 2015 в 15:40
  • 3
    thx q ,, и извините за невежество ,, – NERDYLIZARD 16 February 2015 в 16:50
  • 4
    сколько способов я могу назначить для объявления, что a, b и c не равны? – NERDYLIZARD 16 February 2015 в 16:53
  • 5
    Не уверен, понимаю ли я, что вы спрашиваете? Вы можете создать бесчисленные комбинации логических операций, если хотите. – Nit 16 February 2015 в 17:58

Я попытаюсь объяснить разницу. Объясните первый пример кода:

if (a=b=c) {console.log('something')};
// Code above means: if (c) {console.log('something')};
// So if Boolean(c) is false, console.log will not work

Объясните второй пример:

if ( (a=b)&&(a=c)&&(b=c) ) {console.log('something')};
// Code above means: if (b && c && c) {console.log('something')};
// So if Boolean(c) or Boolean(b) is false, console.log will not work

Оператор присваивания присваивает значение своему левому операнду на основе значения его правого операнда и верните значение его правого операнда.

1
ответ дан Pinal 16 August 2018 в 05:28
поделиться
  • 1
    Хорошо, он, наконец, отредактировал вопрос, чтобы понимать то, что, как мы думали, он имел в виду. Так что этот ответ не то, что он искал. Хорошая попытка, хотя. :) – Almo 16 February 2015 в 16:27
Другие вопросы по тегам:

Похожие вопросы: