Строковые операторы
Оператор + выполняет конкатенацию двух строковых операндов. Так, следующее выражение равно строке "hello there":
"hello" + " " + "there"
Следующие инструкции дают в результате строку "22":
a = "2"; b = "2";
c = a + b;
Операторы <, <=, > и >= сравнивают две строки и определяют, в каком порядке они следуют друг за другом. Сравнение основано на алфавитном порядке, базируемом на используемой в JavaScript кодировке Unicode. В этой кодировке все прописные буквы латинского алфавита идут раньше, чем все строчные буквы (прописные «меньше» строчных).
Оператор + особенный, поскольку дает приоритет строковым операндам перед числовыми, то есть если один из операндов оператора + представляет собой строку (или объект), то другой операнд преобразуется в строку (или оба операнда преобразуются в строки) и операнды конкатенируются, а не складываются.
Операторы сравнения выполняют строковое сравнение, только если оба операнда представляют собой строки. Если только один операнд – строка, то интерпретатор JavaScript пытается преобразовать ее в число.
Примеры:
1 + 2 // Сложение. Результат равен 3.
"1" + "2" // Конкатенация. Результат равен "12".
"1" + 2 // Конкатенация; 2 преобразуется в "2". Результат равен "12".
11 < 3 // Численное сравнение. Результат равен false.
"11" < "3" // Строковое сравнение. Результат равен true.
"11" < 3 // Численное сравнение; "11" преобразуется в 11. Результат равен false.
"one" < 3 // Численное сравнение; "one" преобразуется в NaN. Результат равен false.
И наконец, важно заметить, что когда оператор + применяется к строкам и числам, результат может зависеть от порядка, в котором выполняются операции. Это можно видеть на следующих примерах:
s = 1 + 2 + "котов"; // Равно "3 котов "
t = "мышей: " + 1 + 2; // Равно "мышей: 12"
Причина этой удивительной разницы в поведении заключается в том, что оператор + работает слева направо, если только скобки не меняют этот порядок.
Дата добавления: 2015-08-01; просмотров: 812;