JavaScript. Типы данных и операторы

  1. Литералы 
  2. Переменные 
  3. Массивы
  4. Функции 
  5. Объекты 
Они делятся на встроенные и пользовательские (определяемые программистом).
Литералы - данные, непосредственно используемые в программе. Литералы могут быть разных типов.
  • Числовые литералы: 10 2.310 2.3е+2
  • Строковый литерал: 'Строковый' "Строковый" 
Литералы используются в операциях присваивания:
Присваивание выполняется справа налево:
Экранирование кавычек в тексте знаком '/"'.

Переменные

Объявление переменных происходит через var, можно определять через запятую, присваивая ей значение или нет. 
Тип переменной определяется по её значению. JavaScript является гибко типизированным языком в разных частях программы одна и та же переменная может иметь значения разных типов. 
Для определения типа переменой существует оператор typeof();

Области видимости 

Объявление с var вне функции делает переменную глобальной. 
Объявление var внутри функции делает переменную локальной.  

Конфликт локальных и глобальных переменных 

Будет выдано 7, так как в блоке вывода фигурирует глобальная переменная.
Примечание, при объявлении можно var не писать. 
Отсутвие var в функции, делает переменную конструктора. 

Нестандартный пример с неожиданным выводом 

Будет выведено 5, так как вызов f(3) изменил значение переменной k. 

Массивы 

Массивы делятся на встроенные, называемые коллекциями, и пользовательские. 
Для определения пользовательского используется конструктор Array. 
Элементы нумеруются с 0. Не могут быть многомерными. Но может быть массив массивов. 

Методы по работе с массивами

Метод join() объединяет элементы массива в строку. 
Обратный метод split() рабивает сроку на элементы массива по разделителю. 
Пример 
Полученный массив 
Меняем значения у 0 и 1 элементов массива:
Склеим получившиеся значения:

Метод reverse()

Метод reverse() применяется для изменения порядка элементов массива на противоположный. Инициализируем массив: Упорядочим его в обратном порядке, вызвав метод reverse(), тогда новый массив будет содержать:

Метод sort()

Метод sort() интерпретирует элементы массива как строковые литералы и сортируем массив в алфавитном (лексикографическом) порядке. Метод sort() меняет массив. В предыдущем примере, применив a.sort, получим: Если необходимо отсортировать числа, в функцию sort() добавляется необязательный аргумент, являющийся именем функции, удовлетворяющей следующим требованиям:
  • у нее должно быть два аргумента
  • она должна возвращать число
  • если первый аргумент функции должен считаться меньшим  (большим, равным), чем второй аргумент, то функция должна возвратить отрицательное (положительное, ноль) значение
Функция имеет вид:
Если нам необходимо сортировать числа, то мы можем использовать следующую функцию:
Для примера создадим массив \(b = new Array(10,6,300,25,18)\) и сравним результаты сортировки без аргумента и с функцией compar в качестве аргумента: </ br> \(Алфавитный порядок:)\) </ br> \(10, 18, 25, 300, 6)\) </ br> \(Числовой порядок:)\) </ br> \(6, 10, 18, 25, 300)\) </ br> Метод sort() понимает элементы массива как строки, но не преобразует их в строки.

Операторы

  • {...}
  • if ... else ...
  • ()?
  • while
  • for
  • break
  • continue
  • return

{...}

Фигурные скобки определяют составной оператор - блок. 
Назначение - определение тела цикла, тело условного оператора или функции.

if ... else ...

Условный оператор применяется для ветвления программы по логическому условию. Есть два варианта синтаксиса:
Пример использования:

()?

Этот оператор называется условным выражением, выдает одно из двух значений в зависимости от выполнения некоторого условия. Синтаксис: Является альтернативой if...else... . Следующие примеры равносильны:

while

Оператор while задает цикл. Определяется следующим образом: Формально, цикл while работает следующим образом:
  1. проверяется условие_продолжения цикла:
    • если оно ложно (false), цикл закончен,
    • если же оно истинно (true), продолжаем далее
  2. выполняем тело_цикла;
  3. переходим к п.1.
Такой цикл используется, когда заранее неизвестно количество итераций, например, в ожидании некоторого события. Пример:

for

Оператор for - оператор цикла. Он имеет вид: Цикл работает следующим образом:
  1. выполняется инициализация_переменных_цикла;
  2. проверяется условие_продолжения цикла:
    • если оно ложно (false), цикл закончен,
    • если же оно истинно (true), продолжаем далее
  3. выполняем тело_цикла;
  4. выполняется модификация_переменных_цикла
  5. переходим к п.1.
Пример использования: Math - втроенный объект, предоставляющий многочисленные математические константы и функции, а Math.pow(n,m) вычисляет степенную функцию \(n^{m}\).

break

Оператор break позволяет дострочно покинуть тело цикла. Изменим пример с кубами чисел, распечатаем только кубы, не превышающие 5000. Несмотря на то,что переменную n мы заставили пробегать от 1 до 100, т.е. заведомо с запасом, реально же цикл выполнится для значений от 1 до k, где k - номер последней итерации в данном случае.

continiue

Оператор continue позволяет перейти к следующей итерации цикла, пропустив выполнение всех нижестоящих операторов в теле цикла.Если нам нужно вывести кубы чисел от 1 до 100, превышающие 10 000, то мы можем составить такой цикл:

return

Оператор return используют для возврата значения из функции или обработчика события. Оператор return не только указывает, какое значение должна вернуть функция, но и прекращает выполнение дальнейших операторов в теле функции. При использовании в обработчиках событий оператор return позволяет отменить или не отменять действие по умолчанию, которое совершает браузер при возникновении данного события. Отменить его, однако, можно не для всех событий. В этом примере без оператора return false пользователь увидел бы окно предупреждения "Не отправим!" и далее был бы перенаправлен на страницу newpage.html. Оператор же return false позволяет отменить отправку формы, и пользователь лишь увидит окно предупреждения. Аналогично, чтобы отменить действие по умолчанию для параметров событий onClick, onKeyDown, onKeyPress, onMouseDown, onMouseUp, onSubmit, onReset, нужно использовать return false. Для события onMouseOver с этой же целью нужно использовать оператор return true. Для некоторых же событий, например onMouseOut, onLoad, onUnload, отменить действие по умолчанию невозможно.

Комментарии

Популярные сообщения