Главная страница
Навигация по странице:

  • Урок 3. Переменные и литералы

  • Специальные

  • Вещественные литералы 1.25 0.125е01 12.5Е-1 0.0125Е+2 Ошибка

  • Специальные числовые литералы

  • Строковый тип Строковое значение — последовательность ноль или более символов Unicode, которая используется в программе для представления текстовых данных. Строковые литералы

  • Esc-последовательности Символ

  • Булевый тип Имеет два значения — истина и ложь. Обычно значения этого типа используются в операторах принятия решения if и switch или в операторах цикла типа while. Булевы литералы

  • Специальные типы данных

  • Динамическое изменение типа переменной

  • Определение типа переменной

  • Урок 4. Выражения и операции

  • Арифметические операции Операция Смысл

  • Логические выражения Для создания логических выражений используются операции сравнения и логические операции , применяемые к переменным любого типа. Операции сравнения

  • Операция Синтаксис Описание

  • Логические операции Операция Синтаксис Описание

  • Битовые логические операции Операция Синтаксис Описание

  • Комбинированные операции присваивания

  • Операция Значение

  • Приоритет операций В приводимой ниже таблице перечислены все операции JavaScript в нисходящем порядке. Операции с одинаковым приоритетом выполняются в выражении слева направо. Операции

  • Пример 4. Цикл for в сценарии JavaScript

  • конспект курса Java Script. Программирование клиентской части Интернет приложений с использованием JavaScript


    Скачать 1.49 Mb.
    НазваниеПрограммирование клиентской части Интернет приложений с использованием JavaScript
    Анкорконспект курса Java Script
    Дата17.05.2023
    Размер1.49 Mb.
    Формат файлаpdf
    Имя файлаkonspekt_kursa_JavaScript.pdf
    ТипУрок
    #1137677
    страница3 из 11
    1   2   3   4   5   6   7   8   9   10   11







    19


    20 5. Повторите упражнение 3, но только отсчет интервала времени следует вести от момента завершения обработки страницы браузером.
    Урок 3. Переменные и литералы
    Реализация JavaScript является примером языка свободного использования типов.
    Тип переменной зависит от типа хранимых в ней данных, причем при изменении типа данных, меняется и тип переменной.
    JavaScript поддерживает следующие простые типы данных:
    1. Числовой (целый и вещественный)
    2. Строковый
    3. Булевый, или логический
    Сложные (ссылочные) типы данных:
    1. Объектный
    2. Массив
    Специальные типы данных:
    1. null
    2. undefined
    Числовой тип
    В языке JavaScript целые и вещественные числа не различаются — внутренне они представляются числами в формате плавающей точки. Используется стандарт
    IEEE 754 представления вещественных чисел в восьмибайтном формате чисел с плавающей точкой. Диапазон изменения абсолютных значений: от 5∙10
    -324
    до
    1.7976931348623157∙10 308
    Целые литералы
    123, -123, +678 // целое: десятичные числа
    0123, -0123, +0677 // целое: восьмеричные числа
    0x18F, -0X8A, +0xAA // целое: положительное число
    Вещественные литералы
    1.25 0.125е01 12.5Е-1 0.0125Е+2
    Ошибка: 00.234 (начинается с нуля, а, следовательно, является восьмеричным целым и точки в литерале быть не должно)
    Специальные числовые литералы
    1.
    NaN (Not a Number — не число) используется в качестве результата арифметических операций над строками и специальным значением undefined.
    2.
    Infinity и -Infinity используются для значений чисел, выходящих за допустимый диапазон их изменения в JavaScript.

    21
    Строковый тип
    Строковое значение — последовательность ноль или более символов Unicode, которая используется в программе для представления текстовых данных.
    Строковые литералы
    В JavaScript строковые литералы можно задавать двумя равноправными способами — последовательность символов, заключенная в двойные или одинарные кавычки:
    "Анна"
    'АННА'
    Один тип кавычек можно использовать в литерале, заданном другим типом кавычек:
    "It's a string" // значение строки равно It's a string
    ""
    // пустая строка
    В строковых литералах можно использовать ESC-последовательности, которые начинаются с символа обратной наклонной черты, за которой следует обычный символ. Некоторые подобные комбинации трактуются как один специальный символ:
    Esc-последовательности
    Символ
    \b
    Возврат на один символ
    \f
    Переход на новую страницу
    \n
    Переход на новую строку
    \r
    Возврат каретки
    \t
    Горизонтальная табуляция Ctrl-I
    \'
    Апостроф
    \"
    Двойные кавычки
    \\
    Обратная наклонная черта
    ESC-последовательности форматирования "работают" при отображении информации в диалоговых окнах, отображаемых функциями alert(), prompt() и confirm(), а также если методом document.write() записывается содержимое элемента PPE.
    Булевый тип
    Имеет два значения — истина и ложь. Обычно значения этого типа используются в операторах принятия решения if и switch или в операторах цикла типа while.
    Булевы литералы
    Две лексемы true и false.
    Числовые значения в булевом контексте также трактуются как истина или ложь:

    22

    целый или вещественный нуль (0, 00, 0.0, 0e1), null и undefined трактуются как false;

    все остальные числовые значения рассматриваются как true.
    Строковые значения в булевом контексте также трактуются как истина или ложь:

    пустая строка "" трактуются как false;

    все остальные строковые значения рассматриваются как true.
    Специальные типы данных
    Тип данных null имеет одно значение null. Когда переменная имеет значение null
    , то это означает, что она "пуста" — ей не присвоено никакого значения допустимого типа. Присваивание переменной значения null не уничтожает ее, но просто делает ее переменной, не содержащей значения любого допустимого типа данных: числового, строкового, булевого, объектного или массива. Значение null трактуется как 0 в арифметических операциях и false в логических, но оно не равняется 0 (как в С и С++).
    Операция typeof для специального типа null возвращает Object (из-за совместимости с предыдущими версиями JavaScript).
    Тип данных undefined имеет единственное значение undefined, которое присваивается переменной в двух случаях:
    1. переменная объявлена, но ей еще не присвоено никакое значение;
    2. при попытке обратиться к несуществующему свойству объекта.
    В булевом контексте значение undefined трактуется как false, а в арифметическом как NaN. Нельзя сравнивать со значением undefined (такого просто не существует), но следует использовать операцию typeof, возвращающую тип undefined.
    Переменные
    Каждая переменная задается своим идентификатором — последовательностью буквенно-цифровых символов, начинающуюся с буквы (символ подчеркивания относится к букве):
    Temp1
    MyFunction
    _my_Method
    Определить переменную можно двумя способами:

    оператором var;

    оператором присваивания.
    Оператор var используется как для задания, так и для инициализации переменной и может располагаться в любом месте сценария: var имя_переменной [= начальное_значение]; var weekDay = "Пятница";

    23
    Оператор присваивания, составленный из единственной операции присваивания, для которой используется символ =, также может вводить новую переменную в любом месте сценария, а также он используется для изменения значения уже созданной переменной.
    В выражениях все переменные должны быть объявлены либо оператором var, либо в операторе присваивания. В противном случае будет сгенерирована ошибка, что отсутствует определение соответствующей переменной.
    Динамическое изменение типа переменной
    По ходу выполнения сценария переменной могут присваиваться разные значения, меняя, таким образом, ее тип: var weekDay // переменная определена, но не инициализирована
    // она имеет специальное значение undefined weekDay = "Пятница"; // Строковый тип weekDay = 5;
    // Целый тип
    Определение типа переменной
    Унарная операция typeof позволяет определить тип переменной, т. е. определить тип величины, хранящейся в данный момент в переменной. Синтаксис ее имеет вид: typeof(переменная) typeof переменная
    Эта операция возвращает одну из шести строк, соответствующих возможным типам данных JavaScript:
    "number"
    "string"
    "boolean"
    "undefined"
    "object"
    "function"
    Упражнения
    1. Написать сценарий, который при загрузке страницы HTML в браузер методом document.write() формирует на странице элемент PRE и его содержимое в виде трех строк текста, в которых слова отделены символами табуляции. Это действие реализовать в одном вызове метода document.write().
    2. Написать сценарий, который после загрузки страницы отображает в диалоговом окне, создаваемом функцией alert(), три строки сообщения.

    24 3. Проверить соответствие булеву значению false значений 0, 00, 0.0, 0e1, null, undefined, +1, -1.1, "", "0", "undefined", "xxxx". Для этого создать переменные с указанными значениями и распечатать, например, функцией alert(), результат вычисления выражения !v, где v является идентификатором переменной с одним из указанных значений.
    4. Написать сценарий, в котором одной и той же переменной присваиваются разные значение. После изменения значения переменной распечатать ее тип
    (результат выполнения операции typeof).
    Урок 4. Выражения и операции
    Выражение – это комбинация переменных, литералов и операций, в результате вычисления которой получается одно единственное значение.
    Переменные в выражениях должны быть инициализированы либо в операторе var
    , либо оператором присваивания. Если при вычислении выражения встречается неинициализированная или вообще не определенная переменная, то в
    Internet Explorer версий меньше 6.0 интерпретатор генерирует ошибку "undefined variable" ("переменная не определена"), указывая ее местоположение на странице HTML. В Internet Explorer 6.0 ситуация с использованием в выражении неинициализированной переменной была приведена к стандарту — такая переменная, а с ней и все арифметическое выражение принимает значение NaN, трактуемое в булевом контексте как false, а в строковых операциях как строка "NaN", но при использовании необъявленной переменной интерпретатор генерирует ошибку "определение отсутствует".
    Присваивание является операцией, которая не только присваивает левому операнду значение правого, но и вычисляется равным значению выражения правой части. Таким образом, любая конструкция с операцией присваивания рассматривается как выражение.
    Кроме выражения присваивания в JavaScript определены еще три типа выражений:

    арифметическое — вычисляемым значением является число;

    строковое — вычисляемым значением является строка;

    логическое — вычисляемое значение равно true или false.
    Арифметические операции
    Операция
    Смысл
    +
    Сложение
    -
    Вычитание
    *
    Умножение
    /
    Деление (1/2=0.5)

    25
    %
    Остаток от деления чисел (12%5.1=1.5999999999999996)
    ++
    Увеличение на 1 (префиксная и постфиксная)
    --
    Уменьшение на 1 (префиксная и постфиксная)
    Пример: speed = 5.5; time = 4; distance = speed * time; distance = (speed ++)*time;
    Арифметические операции в выражении вычисляются слева направо с учетом общепринятого их математического старшинства. Скобками можно изменить порядок выполнения арифметических операций в выражении.
    Логические выражения
    Для создания логических выражений используются операции сравнения и
    логические операции, применяемые к переменным любого типа.
    Операции сравнения
    Операция
    Синтаксис Описание
    == a == b
    Истина, если оба операнда равны
    === a === b true, если значения операндов равны и сами операнды одного типа
    != a != b
    Не равно
    !== a !== b true, если значения операндов не равны и/или они не одного типа
    >= a >= b
    Больше или равно
    <= a <= b
    Меньше или равно
    > a > b
    Строго больше
    < a < b
    Строго меньше
    Логические операции
    Операция
    Синтаксис Описание
    && a && b логическое И
    Возвращает a, если оно преобразуется к false, иначе b
    || a || b логическое ИЛИ
    Возвращает a, если оно преобразуется к true, иначе b
    !
    !a логическое НЕ
    Если a равно true, возвращает false; если a

    26 равно false, возвращает true
    Вычисляются по укороченной схеме — если результат операции становится известным после вычисления первого операнда, то второй операнд вообще не вычисляется. В следующих выражениях второй операнд вычисляться не будет, так как результат их вычисления уже определен значением первого операнда вне зависимости от значения второго: false && операнд2 // всегда равно false true || операнд2 // всегда равно true
    Битовые логические операции
    Операция
    Синтаксис Описание
    И a & b
    Результирующий бит равен 1, если оба равны 1, иначе 0
    ИЛИ a | b
    Результирующий бит равен 1, если хотя бы один бит равен 1
    Исключающее
    ИЛИ a ^ b
    Результирующий бит равен 1, если хотя бы один бит равен 1, но не оба одновременно
    Отрицание

    a
    Инвертирует биты
    Смещение влево a << n
    Сдвигает все биты влево на n позиций, добавляя справа нулевые
    Смещение вправо a >> n
    Сдвигает все биты вправо на n позиций, используя значение знакового бита для заполнения "освобождаемых" слева битов
    Смещение вправо с заполнением нулями a >>> n Сдвигает все биты вправо на n позиций, заполняя "освобождаемые" слева биты нулями
    Строковые операции
    Существует только одна строковая операция – операция конкатенации
    (соединения) строк +, если не считать сокращенной формы операции присваивания со сложением += и сравнения строк. string = "Моя" + "строка"; // string равно "Моястрока"
    Операция конкатенации строк может использоваться со смешанными типами операндов. Все операнды приводятся к строковому типу, если хотя бы один из операндов содержит строковый литерал.
    "Май" + 2.003е3 результат "Май2003",
    "Май" + t результат "Майtrue", если переменная t содержит булево значение true.
    "1"+"1.1" результат "11.1"
    "1"+1.1 результат "11.1"

    27
    Комбинированные операции присваивания
    Под комбинированными операциями присваивания понимаются операции, совмещающие выполнение какой-либо определенной операции с одновременным присваиванием ее результата переменной, определяемой первым операндом.
    Общий синтаксис подобных комбинированных операций следующий: a OP= b, где OP заменяется на символ одной из рассмотренных ранее операций языка JavaScript.
    Операция
    Значение
    x *= y x = x * y x /= y x = x / y x += y x = x + y x -= y x = x - y x %= y x = x % y x <<= y x = x << y x >>= y x = x >> y x >>>= y x = x >>> y x &= y x = x & y x ^= y x = x ^ y x |= y x = x | y
    Условная операция
    Единственная операция в языке, требующая три операнда, причем первый операнд вычисляется в булевом контексте:
    (условие) ? операнд2 : операнд3;
    Семантика ее такова: если значение первого операнда-условия истинно, то возвращается вычисленное значение второго операнда, иначе третьего.
    Например, результатом выполнения следующего выражения будет присваивание переменной range строки "Пересдача", если значение переменной mark меньше или равно 2, в противном случае переменная range будет иметь значением строку "Зачтено": range = (mark <= 2) ? "Пересдача" : "Зачтено";
    Приоритет операций
    В приводимой ниже таблице перечислены все операции JavaScript в нисходящем порядке. Операции с одинаковым приоритетом выполняются в выражении слева направо.
    Операции
    Описание
    . [] ()
    Доступ к значению свойства объекта, вычисление

    28 индекса массива, вызов функции и группирование в выражении
    ++ -- - ! delete new typeof void
    Унарные операции увеличения/уменьшения на единицу, вычисление числового содержимого с обратным знаком, побитовое инвертирование содержимого, логическое отрицание, удаление свойства объекта, создание объекта, получение типа данных, вычисление выражения, но возврат значения undefined
    * / %
    Умножение, деление, остаток от деления
    + - +
    Сложение, вычитание и конкатенация
    << >> >>>
    Битовые сдвиги
    < <= > >= instanceof
    Логические операции и операция проверки является ли данный объект экземпляром какого- либо объекта
    == != === !==
    Логические операция сравнения на равенство и неравенство
    &
    Побитовое AND
    ^
    Побитовое XOR
    |
    Побитовое OR
    &&
    Логическое AND
    ||
    Логическое OR
    ?:
    Условная операция
    = OP=
    Присваивание и комбинированное присваивание
    ,
    Операция последовательного выполнения
    Упражнения
    0. Как определить целый тип числа.
    1. Объявить в сценарии переменную var1 оператором var, не присваивая ей никакого значения, а переменную var2 не объявлять. Отобразить их содержимое функцией alert() и объяснить результаты.
    2. Предложить способ сложения двух чисел, хранящихся в виде строковых литералов. Например, в выражении "2.1"+"3.0" будет выполнена операция конкатенации строк с результатом "2.13.0", а не сложение чисел, хранящихся в указанных строках. Задача состоит в том, чтобы получить число 5.1.
    3. Можно ли в JavaScript определить, содержит ли переменная число или строку с литералом числа. Приведите, если это возможно, максимальное число способов проверки.
    4. Чему будет равно значение переменной a после выполнения операторов:

    29 а) var a=""; a && (a=true); б) var a="javascript"; a && (a="vbscript"); a || (a="javascript"); в) var b="1.1"; a = typeof b*0.1; б) var b="1.1"; a = typeof(b*0.1);
    Урок 5. Операторы
    Весь набор операторов языка можно разбить на три группы:

    операторы выбора, или условные;

    операторы цикла;

    операторы манипулирования с объектами.
    Операторы выбора
    Предназначены для организации ветвления в сценарии. Общий синтаксис следующий: if(условие) { операторы1
    }
    [else { операторы2
    } ]
    Обратите внимание, что группы операторов блоков if и else заключены в фигурные скобки, которые можно опускать, если группа представлена одним оператором: if(a == b) с = d else { с = e alert(c)
    }
    Семантика этого оператора такова: если проверяемое условие истинно, то выполняются операторы блока if, иначе блока else.
    Операторы выбора могут быть вложенными друг в друга. В этом случае рекомендуется использовать фигурные скобки всегда во избежание ошибок при интерпретации подобных сложных операторов.

    30
    Если необходимо проверять одно и то же выражение на равенство разным значениям, то эффективнее использовать не группу вложенных операторов ветвления, а оператор switch со следующим синтаксисом: switch (выражение){ case значение1 :
    [операторы1]
    [break;] case значение2 :
    [операторы2]
    [break;]
    [default :]
    [операторы]
    }
    Семантика его не отличается от подобных операторов в других языках программирования: выражение вычисляется и последовательно проверяется на равенство значениям, указанным в блоках case. Если равенство найдено, то выполняются операторы соответствующего блока case, если нет, то операторы блока default в случае его наличия.
    Необязательный оператор break, задаваемый в каждом из блоков case выполняет безусловный выход из оператора switch. Если он не задан, то продолжается выполнение операторов и в следующих блоках case до первого оператора break или до конца тела оператора switch.
    Операторы цикла
    Основное предназначение оператора for организовать циклическое выполнение группы операторов, если заранее известно количество итераций: for([инициал_выражение];[условие];[изменяющее_выражение]) {
    [операторы]
    }
    Инициализирующее выражение вычисляется один раз при входе в цикл.
    Изменяющее выражение предназначено для изменения значения переменной цикла, определяемой в инициализирующем выражении, и вычисляется каждый раз при переходе на очередную итерацию вместе с проверкой условия окончания выполнения цикла.
    Переменная цикла не может быть создана локальной (даже если использовать в инициализирующем выражении оператор var) — она будет доступна и после завершения работы цикла: for(var i=0; i < 10; i++){. . .}; a[i] = value; // переменная i равна 10
    Если тело цикла состоит из одного оператора, то фигурные скобки, ограничивающее тело цикла, можно опустить.

    31

    Пример 4. Цикл for в сценарии JavaScript
    Создадим сценарий, который при загрузке документа вычисляет степени числа 2 и выводит в документ таблицу степеней двойки.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта