Ядро JavaScript 1.5. Справочник

       

Операции Сравнения


Операция сравнения сравнивает свои операнды и возвращает логическое значение, базируясь на верности /true сравнения.

Реализована вJavaScript 1.0

JavaScript 1.3: добавлены операции === и !==

JavaScript 1.4: == не рекомендуется для сравнения двух объектов JSObject. Используйте метод .

Версия ECMAECMA-262 содержит все операции сравнения, кроме ===  и  !==
Версия ECMA-262 Edition 3 добавляет  ===  и  !==

Операнды могут иметь числовое или строковое значение. Строки сравниваются на базе стандартного лексикографического упорядочивания с использованием значений Unicode.

Boolean-значение возвращается как результат сравнения:

  • Две строки равны, если они имеют одинаковые последовательности символов, один размер и одинаковые символы в соответствующих позициях.
  • Два числа равны, если они численно равны (имеют одно числовое значение). NaN не равно ничему, включая NaN. Положительные и отрицательные нули равны.
  • Два объекта равны, если они ссылаются на один и тот же Object.
  • Два Булевых операнда равны, если они оба true или false.
  • Типы Null и Undefined являются == (но не ===).
  • В следующей таблице даны операции сравнения.

    Таблица5.3  Операции Сравнения




    Операция

    Описание

    Примеры, возвращающие true

    Равно (==)Возвращает true, если операнды равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения.3 == var1
    "3" == var1
    3 == '3'
    Не равно (!=) Возвращает true, если операнды не равны. Если два операнда имеют разные типы, JavaScript пытается конвертировать операнды к одному типу для сравнения.var1 != 4
    var1 != "3"
    Строго равно (===)Возвращает true, если операнды равны и одного типа.3 === var1
    Строго не равно (!==)Возвращает true, если операнды не равны и/или разных типов.var1 !== "3"

    3 !== '3'

    Больше чем (>)Возвращает true, если левый операнд больше, чем правый операнд.var2 > var1
    Больше или равно (>=)Возвращает true, если левый операнд больше чем или равен правому операнду.var2 >= var1
    var1 >= 3
    Меньше чем (<)Возвращает true, если левый операнд меньше, чем правый операнд.var1 < var2
    Меньше чем или равно (<=)Возвращает true, если левый операнд меньше чем или равен правому операнду. var1 <= var2
    var2 <= 5

     В этих примерах предполагается, что переменной var1

    присваивается значение 3, а переменной var2 присваивается значение 4.


     Использование Операций Равенства


    Стандартные операции сравнения (== и !=) сравнивают два операнда, независимо от их типа.

    Операции строгого равенства (=== и !==) выполняют сравнение равенства операндов одного типа. Используйте операции строгого равенства, если операнды обязаны быть специфического типа и значения или если важен точный тип операндов. Иначе, используйте стандартные операции равенства, которые позволяют проверить идентичность двух операндов, даже если они имеют разные типы.

    Если нужна конверсия типа, JavaScript конвертирует операнды типов String, Number, Boolean

    или Object таким образом:

    • При сравнении числа и строки, строка конвертируется в числовое значение. JavaScript пытается конвертировать строковой числовой литерал в значение типа Number. Сначала математическое значение получается из строкового числового литерала. Затем это значение округляется до ближайшего значения типа Number.

  • Если один из операндов имеет тип Boolean, он конвертируется в 1, если он true, и в +0, если он false.
  • Если объект сравнивается с несколькими строками, JavaScript пытается возвратить значение по умолчанию для этого объекта.
  • Операции пытаются конвертировать объект в примитивное значение, String

    или Number, используя методы valueOf и toString объекта. Если эта попытка конвертации не удаётся, генерируется ошибка времени выполнения.

    Вы не можете использовать стандартную операцию равенства (==) для сравнения экземпляров JSObject. Для таких сравнений используйте метод .

     

    Обратная Совместимость

     

    Поведение стандартных операций равенства (== и !=) зависит от версии JavaScript.

    JavaScript 1.3 и более ранние.

    Можно использовать стандартную операцию равенства (==) или для сравнения экземпляров JSObject.

    JavaScript 1.2.

    Стандартные операции равенства (== и !=) не выполняют конверсию типов перед выполнением сравнения. Операции строгого равенства (=== и !==) недоступны.

    JavaScript 1.1 и более ранние.

    Стандартные операции равенства (== и !=) выполняют конверсию типов до выполнения сравнения.

    Операции строгого равенства (=== и !==) недоступны.



    Содержание раздела