Операторы равенства

Совместимость (Unitless Equality):
Dart Sass
LibSass
Ruby Sass
since 4.0.0 (unreleased)

LibSass и более старые версии Ruby Sass считают числа без единиц измерения равными тем же числам с любыми единицами измерения. Это поведение устарело и было удалено из более поздних выпусков, поскольку оно нарушает транзитивность.

Операторы равенства возвращают, совпадают ли два значения. Они записываются как <expression> == <expression>, которое возвращает, равны ли два выражения и <expression> != <expression>, которое возвращает, являются ли два выражения не равными. Два значения считаются равными, если они одного типа и одного и того же значения, что означает разные вещи для разных типов:

  • Числа равны, если они имеют одинаковое значение и одинаковые единицы измерения, или если их значения равны, когда их единицы конвертируются между собой.
  • Строки необычны тем, что строки без кавычек и в кавычках с одинаковым содержимым считаются равными.
  • Цвета равны, если они имеют одинаковые значения красного, зеленого, синего и альфа-канала.
  • Списки равны, если их содержимое одинаково. Списки, разделенные запятыми, не равны спискам, разделенным пробелами, а списки в квадратных скобках не равны спискам без квадратных скобок.
  • Карты равны, если их ключи и значения равны.
  • Вычисления равны, если их имена и аргументы равны. Аргументы операции сравниваются текстуально.
  • true, false и null равны только самим себе.
  • Функции эквивалентны одной и той же функции. Функции сравниваются по ссылке, поэтому, даже если две функции имеют одинаковое имя и определение, они считаются разными, если они не определены в одном месте.

SCSS Syntax

@debug 1px == 1px; // true
@debug 1px != 1em; // true
@debug 1 != 1px; // true
@debug 96px == 1in; // true

@debug "Helvetica" == Helvetica; // true
@debug "Helvetica" != "Arial"; // true

@debug hsl(34, 35%, 92.1%) == #f2ece4; // true
@debug rgba(179, 115, 153, 0.5) != rgba(179, 115, 153, 0.8); // true

@debug (5px 7px 10px) == (5px 7px 10px); // true
@debug (5px 7px 10px) != (10px 14px 20px); // true
@debug (5px 7px 10px) != (5px, 7px, 10px); // true
@debug (5px 7px 10px) != [5px 7px 10px]; // true

$theme: ("venus": #998099, "nebula": #d2e1dd);
@debug $theme == ("venus": #998099, "nebula": #d2e1dd); // true
@debug $theme != ("venus": #998099, "iron": #dadbdf); // true

@debug true == true; // true
@debug true != false; // true
@debug null != false; // true

@debug get-function("rgba") == get-function("rgba"); // true
@debug get-function("rgba") != get-function("hsla"); // true



Sass Syntax

@debug 1px == 1px  // true
@debug 1px != 1em  // true
@debug 1 != 1px  // true
@debug 96px == 1in  // true

@debug "Helvetica" == Helvetica  // true
@debug "Helvetica" != "Arial"  // true

@debug hsl(34, 35%, 92.1%) == #f2ece4  // true
@debug rgba(179, 115, 153, 0.5) != rgba(179, 115, 153, 0.8)  // true

@debug (5px 7px 10px) == (5px 7px 10px)  // true
@debug (5px 7px 10px) != (10px 14px 20px)  // true
@debug (5px 7px 10px) != (5px, 7px, 10px)  // true
@debug (5px 7px 10px) != [5px 7px 10px]  // true

$theme: ("venus": #998099, "nebula": #d2e1dd)
@debug $theme == ("venus": #998099, "nebula": #d2e1dd)  // true
@debug $theme != ("venus": #998099, "iron": #dadbdf)  // true

@debug calc(10px + 10%) == calc(10px + 10%)  // true
@debug calc(10% + 10px) == calc(10px + 10%)  // false

@debug true == true  // true
@debug true != false  // true
@debug null != false  // true

@debug get-function("rgba") == get-function("rgba")  // true
@debug get-function("rgba") != get-function("hsla")  // true