ActionScript. Должен ли я всегда использовать строгое равенство ("===")? - PullRequest
4 голосов
/ 19 февраля 2011

Мне интересно, должен ли я всегда использовать "===" (строгое равенство) при выполнении проверок на равенство ... Есть ли пример, когда предпочтительнее использовать "==" ( нестрогое равенство)? В частности, следует:

  • if (param1 == null || param1.length == 0)

1010 * будет *

  • if (param1 === null || param1.length === 0)?

А как насчет таких вещей, как строки? param1 == "This is a String."

Ответы [ 2 ]

5 голосов
/ 19 февраля 2011

Оператор, который следует использовать, зависит от ваших потребностей.

«==» проверяет, равны ли два значения после того, как они были преобразованы в один и тот же тип данных (если это возможно). Таким образом, «5» == 5 будет истинным, поскольку строка «5» преобразуется в число, и затем проверка сделана, и, очевидно, 5 действительно равен 5.

"===" проверяет, являются ли два значения одного типа И равны. Таким образом, "5" === 5 будет иметь значение false, потому что один - строка, а другой - число.

С точки зрения выбора использования, все сводится к ожиданиям. Если вы ожидаете, что два сравниваемых значения имеют одинаковый тип, вам следует использовать «===». Однако, если они могут быть разных типов, и вы хотите, чтобы сравнение выполняло преобразование автоматически (например, сравнивая строку 5 с числом 5), тогда вы можете использовать "==".

В случае с вашими примерами все они должны работать с оператором "==", но для дополнительной безопасности типов вы, безусловно, можете использовать оператор "===". Например, я специально проверяю наличие нулей.

Надеюсь, это поможет.

1 голос
/ 19 февраля 2011

На самом деле я мало что знаю о ActionScript, но я считаю, что он совместим с EMCAScript, что означает, что мои знания JavaScript будут актуальны.

В JavaScript, если вы хотите использовать явную типизацию (это означает, что никогдаделайте "something" + 5, всегда будьте явными в ваших типах, например "something" + String(5)), если вы придерживаетесь такого подхода, на самом деле никогда не существует, где == предпочтительнее ===.

...