Я хочу знать, являются ли два фрагмента JavaScript одинаковыми или нет

Я новичок в JavaScript и хочу узнать больше об этом.

Например:

a == true && alert("a is true");

Это похоже на:

if(a == true)
{
    alert("a is true");
}

Если приведенный выше код верен, и если оба они равны, я хочу знать все операторы и условия, подобные этому. Где я могу их найти?

Ответы

Ответ 1

Ответ: результат, который является полем предупреждения, будет таким же.

Пояснение:

Большинство языков предназначены для оценки второго выражения только в том случае, если первый оценивается с помощью true, в случае выражения &&.

Это означает, что если a оценивается как false, null, undefined, пустая строка 0 или NaN, alert("a is true") не будет оцениваться, t см. окно предупреждения.

JavaScript имеет значения, которые могут быть "правдивыми" или "ложными", я предлагаю вам прочитать об этом здесь: http://11heavens.com/falsy-and-truthy-in-javascript.

Таким образом, это зависит от вашего определения "тот же", результат, т.е. просмотр или отсутствие окна предупреждения, тот же.


Если вы хотите узнать больше о разных операторах в JavaScript и о том, как они работают, посмотрите: developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators.

Ответ 2

Единственное различие между ними состоит в том, что это выражение:

a == true && alert("a is true");

Но это утверждение:

if (a == true) {
    alert('a is true');
}

Результат выражения зависит от того, что a == true оценивает.

false && alert('a is true'); // false (and alert box does not show up)
true && alert('a is true');  // undefined (after alert box is clicked away)

Это работает благодаря поведению "короткого замыкания" при оценке выражений; используя &&, первое условие, что falsy станет результатом выражения без оценки остальных.

Другим оператором, который имеет подобное поведение, является логический или ||. Рассмотрим:

a || alert('a is false');

Показывает окно предупреждения, если a оценивается как ложный.

false || alert('a is false'); // undefined (after alert box is clicked away)
true || alert('a is false');  // true (alert box does not show up)

Обратите внимание, что выражения с такими побочными эффектами считаются "умными" решениями; они могут сократить ваш код, но исходное намерение не всегда очевидно.

Тем не менее, есть хорошее применение этого, например:

a = a || 'default value';

Это присвоит значение по умолчанию a, если оно ложно и исходное значение a в противном случае. Вы можете видеть эти выражения довольно часто, и они являются мощной особенностью языка.

Ответ 3

Это не специальный синтаксис Javascript - это всего лишь трюки для сокращения кода.

Нет волшебства. Это простая логика. Обычно такие трюки используются сокращением кода для сокращения кода. Это поведение основано на && и || операторы - они не оценивают вторую часть выражения, если результат становится известным из первой части (в противоположность операторам и /, которые всегда оценивают обе части выражения).

Объяснения:

a==true && alert("a is true");

Если "a" - false - механизм javascript анализирует, что все выражение также должно быть ложным (из-за значения логического оператора "& &" (AND)), и он опускает вторую часть выражения, потому что независимо от того, что он возвращает результат, он не изменит результат целого выражения. Таким образом, он не запускает "alert". В противоположном случае, если "a" истинно, то движок Javascript должен знать результат второй части выражения и запускает "alert". Такое поведение подражает обычному утверждению "если".

a==false || alert("a is true");

Этот использует логический оператор OR. Если "a" является ложным, тогда нет необходимости убеждать вторую часть выражения, а "alert" уволен. Если "a" истинно, тогда существует вероятность того, что вторая часть выражения будет "истина", а целое выражение будет оцениваться как "true", поэтому механизм javascript запускает "alert".

Кроме того, эти ярлыки могут быть сокращены еще больше. Потому что нет необходимости сравнивать два булевых значения: "a" и "true", потому что "a" уже имеет значение boolean. Он делает следующее:

a && alert("a is true");

В принципе, вам не нужно использовать такие вещи вручную, просто используйте обычные инструкции "if" - это сделает ваш код доступным для чтения. Затем вы можете использовать минимизаторы кода для сокращения кода для производства, если это необходимо.

Счастливое кодирование!

Ответ 4

Есть много хороших примеров, как && работает, в других ответах, поэтому я не буду повторять их. В любом случае...

Когда выражение оценивается, оно отправляет возвращаемое значение в качестве результата. В вашем конкретном случае (1-й пример) возвращаемое значение нигде не используется, и результат совпадает с вторым примером. Но если мы будем использовать это возвращаемое значение, скажем, в if, мы можем получить немного запутывающие результаты. Вот пример:

var a = true;
if (a == true && alert('a = true')) {
    alert('a really is true');
} else {
    alert('It seems, that a is not true');
}

Этот код вводит сначала предупреждение "a = true", а второе предупреждение будет "Кажется, что a неверно". Это связано с возвращаемым значением собственной функции DOM alert(), которая возвращает undefined, что делает условие ложным (true && undefined === false). Таким образом, мы можем сказать, что ваши коды-коды равны в этом конкретном контексте, но они не находятся в некоторых других контекстах.

Ответ 5

Они оба делают то же самое. Это сводится к тому, как вы предпочитаете, чтобы ваш код выглядел, и большинство (я думаю) согласен с тем, что 2-я версия лучше всего читать.

Операторы

If останавливают выполнение, когда они приходят к ложному (в случае операторов & &), поэтому в первом утверждении говорится: "если a истинно, то если alert...", что означает, что если a true, тогда будет показано предупреждение.

Это точно тот же результат, что и вторая версия.

Ответ 6

Два набора кода дают один и тот же результат, но не одинаковы

Для первого набора кода

a == true && alert("a is true")

используется логический оператор &&.

При оценке оператора с помощью &&, false && anything вычисляется короткое замыкание на значение false.

Итак, в первом утверждении предупреждение (1) не вызывается, если a - false. Компилятор js пропускает оператор alert.

Если a истинно, тогда выполняется предупреждение (1), потому что условие не закорачивается.

Во втором наборе используется нормальное условие if. Проверьте ссылку .

Ответ 7

этот код делает то же самое, проверьте, является ли true, а затем вызывает функцию оповещения о функции, я могу сказать, что это то же самое.