- •Лекция № 2
- •Введение
- •1. Основные синтаксические и семантические правила
- •1.1. Общая структура программы и данных
- •1.2. Типы данных, их организация в памяти и литералы
- •1.3. Ввод и вывод значений
- •1.4. Литералы значений
- •Литералы целых чисел
- •Литералы вещественных чисел
- •Перевод чисел в системы с другим основанием
- •Строковые литералы
- •Литералы массивов
- •Литералы объектов
- •1.5. Операции и выражения
- •Арифметические операции
- •Строковые операции
- •Операции сравнения
- •Компонентные операции
- •Операции присваивания
- •Другие операции
- •Синтаксис и семантика выражений
- •1.6. Дополнительные понятия и правила синтаксиса Ограничения на идентификаторы
- •Комментарии
- •Лексемы, пробельные символы и комментарии
- •2. Регулярные структуры данных
- •2.1. Многомерные массивы
- •2.2. Рекурсивные структуры объектов
- •Деревья
Строковые операции
Операция |
Результат |
Примеры |
строка + строка |
Конкатенация – соединение двух строк в одну |
"лист" + "5" даёт строку лист5 "лист " + "5" даёт строку лист 5 |
Эта операция применяется, когда значение хотя бы одного её операнда не является числом, или логическим значением, или null. При этом делается попыткапривестизначения операндов к строкам. Так, выражение"лист" + 5 даёт строкулист5, т.е. число 5 приводится к строке"5". Более сложных случаев лучше избегать.
Операции сравнения
Операции сравнения всегда в качестве результата выдают логическое значение trueилиfalse.
Сравнение чиселпроисходит так же, как в математике. При сравнениистроксравниваются числовые коды символов по порядку слева направо (равными могут быть только одинаковые строки). Порядок (перед,после) строк определяется, как в словаре (он называетсясловарнымилилексикографическим). Коды символов (на самом деле важен лишь порядок символов в алфавите) можно посмотреть в менюВставка/Символлюбой программы изMSOffice. При сравненииобъектов(в том числе и массивов) сравниваются их ссылки, т.е. имеет смысл только сравнениеравно–не равно.
При сравнении значений разных типовнекоторые операции сравнения пытаютсяпривестиоперанды к сравнимым значениям, например, к числу или строке. Так, массив[1]приводится к числу 1 или строке "1". Во избежание лишних проблем не следует слишком надеяться на автоматическое приведение.
Операция |
Результат |
Примеры, когда выдаётся true |
знач1 == знач2 (равно) |
Результат равен true, если операнды равны друг другу. Если значения имеют разные типы, выполняется приведение. |
3==1+2 3=="3" 3==['3'] 3==[1+2] |
знач1 === знач2 (тождественно) |
Результат равен true, если операнды одного типа и равны друг другу. Приведение не выполняется. |
3===1+2 "31"==="3"+"1" x=[1]; y=x; x===y |
знач1 != знач2 (не равно) |
Результат равен true, если операнды не равны друг другу. Если значения имеют разные типы, выполняется приведение. |
3!=2+2 3 != '1'+2 (правый операнд равен 12) [3] != [3] (у этих массивов разные ссылки) |
знач1 !== знач2 (не тождественно) |
Результат равен true, если операнды одного типа и не равны друг другу. Приведение не выполняется. |
3 !== "3" "3" !== "3"+"1" x=[1]; y=[1]; x!==y |
знач1 < знач2 (меньше, перед) |
Результат может быть true только при сравнении чисел и строк. При сравнении строки и числа строка приводится к числу. Для остальных типов делается попытка преобразования к числам. |
2<3 'ab'<'ba' 'a'<'aa' 'abc'<'ac' 2<"3" "2"<3 |
знач1 > знач2 (больше, после) |
Результат такой же, как для выражения знач2 < знач1 |
|
знач1 <= знач2 (меньше или равно) |
Результат такой же, как для выражения !(знач1 > знач2) |
|
знач1 >= знач2 (больше или равно) |
Результат такой же, как для выражения !(знач2 < знач1) |
|
Логические операции, в основном, используются для задания сложных условий. Если они выполняются над логическими значениями(trueиfalse), то дают в результате логическое значение. Операнды этих операций, не являющиеся логическими значениями,приводятсяк таковым по правилу:
К false приводятся значения 0, "", null, NaN и undefined.
Остальные значения приводятся к true.
Но иногда они выдают значение операнда, даже если он не является логическим значением (см. таблицу).
Операция |
Название |
Результат |
! значение |
НЕ, NOT (отрицание) |
Выдаёт значение true, если значение операнда может быть приведено к false. В противном случае выдаётся значение false. |
знач && знач |
И, AND (логическое произведение) |
Выдаёт значение первого операнда, если оно может быть приведено к false. В противном случае выдаётся значение второго операнда. |
знач || знач |
ИЛИ, OR (логическая сумма) |
Выдаёт значение первого операнда, если оно может быть приведено к true. В противном случае выдаётся значение второго операнда. |