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

Содержание

Слайд 2

литералы; переменные; массивы; функции; объекты. Встроенные структуры и типы данных Лекция №3

литералы;
переменные;
массивы;
функции;
объекты.

Встроенные структуры и типы данных

Лекция №3

Слайд 3

Литералом называют данные, которые используются в программе непосредственно. При этом под

Литералом называют данные, которые используются в программе непосредственно.
При этом под

данными понимаются числа или строки текста.
Все они рассматриваются в JavaScript как элементарные типы данных.

Литералы

Слайд 4

числовой литерал: 10 числовой литерал: 2.310 числовой литерал: 2.3e+2 строковый литерал:

числовой литерал: 10
числовой литерал: 2.310
числовой литерал: 2.3e+2
строковый литерал: 'Это строковый литерал'
строковый

литерал: "Это строковый литерал"

Примеры литералов

Слайд 5

в операциях присваивания значений переменным : var a=10; var str =

в операциях присваивания значений переменным :
var a=10;
var str = 'Строка';
или в операциях сравнения:
if(x=='test')

alert(x);

Использование литералов

Слайд 6

Если в строковом литерале требуется использовать одинарную кавычку, то сам литерал

Если в строковом литерале требуется использовать одинарную кавычку, то сам литерал можно заключить

в двойные кавычки: "It's cool!". Верно и обратное.
Если необходимо использовать оба типа, то:
команда:
document.write("It\'s good to say \"Hello\" to someone!");
выдаст:
It's good to say "Hello" to someone!

Кавычки в строковых литералах

Слайд 7

создаются конструктором: var s = new String(). Отличается от строковых литералов

создаются конструктором:
var s = new String().
Отличается от строковых литералов (последовательностей символов,

заключенных в кавычки)!
Для этого объекта существует много методов (лекция №3).
При применении к строчным литералам методов строчных объектов происходит преобразование первых в последние.

Строковые объекты

Слайд 8

Переменная - это область памяти, имеющая свое имя и хранящая некоторые

Переменная - это область памяти, имеющая свое имя и хранящая некоторые данные.

Переменные в JavaScript объявляются с помощью оператора var, при этом можно давать или не давать им начальные значения:
var k;
var h='Привет!';
При объявлении нескольких переменных в одном операторе var, переменные записываются через запятую.

Переменные

Слайд 9

определяется по присвоенному ей значению. Язык JavaScript - слабо типизирован: var

определяется по присвоенному ей значению.
Язык JavaScript - слабо типизирован:
var i=5;

alert(typeof(i));
i= new Array(); alert(typeof(i));
i= 3.14; alert(typeof(i));
i= 'Привет!'; alert(typeof(i));
i= window.open(); alert(typeof(i));

Тип переменной

Слайд 10

Переменная, объявленная оператором var вне функций, является глобальной - она "видна"

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

оператором var внутри какой-либо функции, является локальной - она "видна" только в пределах этой функции.

Глобальные и локальные переменные

Слайд 11

function f() { var k=5; } f(); alert(k); Пример 1

function f()
{ var k=5; }
f();
alert(k);

Пример 1

Слайд 12

var k=7; function f() { var k=5; } f(); alert(k); Пример 2

var k=7;
function f()
{ var k=5; }
f();
alert(k);

Пример 2

Слайд 13

Объявлять переменные можно и без оператора var: for(i=0; i НО! Объявление переменных

Объявлять переменные можно и без оператора var:
for(i=0; i<8; i++) { ... }
НО!

Объявление

переменных
Слайд 14

1) нарушается ясность кода: если написано i=5, то непонятно, вводится ли

1) нарушается ясность кода: если написано i=5, то непонятно, вводится ли здесь новая переменная или меняется значение старой.
2)

внутри функции объявление переменной без оператора var делает переменную глобальной (а не локальной, как можно было бы предположить), и значит, ее значение могут "видеть" и менять другие функции или операторы вне этой функции.

Опускать var не рекомендуется

Слайд 15

function f() { var i=5; k=7; } f(); alert(k); Пример

function f()
{ var i=5; k=7; }
f();
alert(k);

Пример

Слайд 16

1) встроенные ( коллекции document.links[], document.images[] и т.д.) (лекция №3); 2)

1) встроенные ( коллекции document.links[], document.images[] и т.д.) (лекция №3);
2) определяемые

пользователем.
Для массивов определено несколько методов: join(), reverse(), sort() и другие, а также свойство length, которое позволяет получить число элементов массива.

Массивы

Слайд 17

Для определения массива пользователя существует специальный конструктор Array. Если ему передается

Для определения массива пользователя существует специальный конструктор Array.
Если ему передается единственный аргумент, причем целое

неотрицательное число, то создается незаполненный массив соответствующей длины. Если же передается один аргумент, не являющийся числом, либо более одного аргумента, то создается массив, заполненный этими элементами.

Определение массива

Слайд 18

a = new Array(); // пустой массив (длины 0) b =

a = new Array();
// пустой массив (длины 0)
b = new Array(10);
//

массив длины 10
c = new Array(10,'Привет');
// массив из двух элементов: числа и строки
d = [5, 'Тест', 2.71828, 'Число e'];
// краткий способ создать массив из 4 элементов
Элементы массива нумеруются с нуля!

Примеры

Слайд 19

Метод join() позволяет объединить элементы массива в одну строку. Он является

Метод join() позволяет объединить элементы массива в одну строку.
Он является обратным к

методу split(), который разрезает объект типа String на куски и составляет из них массив.

Метод join() и split()

Слайд 20

localURL = "file:///C:/portal/internet/js/2/2.html" b = localURL.split(':/') Получаем массив: b[0] = "file";

localURL = "file:///C:/portal/internet/js/2/2.html"
b = localURL.split(':/')
Получаем массив:
b[0] = "file";
b[1] = "//C";
b[2] =

“portal/internet/js/2/2.html";
Заменяем 0-й и 1-й элементы на требуемые:
b[0] = "http:";
b[1] = "/www.mpei.ru";
globalURL = b.join("/").
Значение globalURL будет равно: http://www.mpei.ru/portal/internet/js/2/2.html

Пример. Преобразования локального URL в глобальный

Слайд 21

Метод reverse() применяется для изменения порядка элементов массива на противоположный. Метод reverse()

Метод reverse() применяется для изменения порядка элементов массива на противоположный.

Метод reverse()

Слайд 22

Пусть существует массив a a = new Array('мать','видит','дочь'); Упорядочим его в

Пусть существует массив a
a = new Array('мать','видит','дочь');
Упорядочим его в обратном порядке,

вызвав метод a.reverse(). Тогда новый массив a будет содержать:
a[0]='дочь';
a[1]='видит';
a[2]='мать';

Пример

Слайд 23

Метод sort() интерпретирует элементы массива как строковые литералы и сортирует массив

Метод sort() интерпретирует элементы массива как строковые литералы и сортирует массив в алфавитном (т.н. лексикографическом) порядке.
Применим a.sort()

к предыдущему примеру, получим:
a[0]='видит';
a[1]='дочь';
a[2]='мать';

Метод sort()

Слайд 24

Например, согласно алфавитному порядку 40 идет раньше, чем 5. У метода

Например, согласно алфавитному порядку 40 идет раньше, чем 5.
У метода sort() есть необязательный аргумент, являющийся именем

функции, согласно которой требуется отсортировать массив: a.sort(myfunction).
Требования к функции:
у нее должно быть ровно два аргумента;
функция должна возвращать число;
если первый аргумент функции должен считаться меньшим (большим, равным) чем второй аргумент, то функция должна возвратить отрицательное (положительное, ноль) значение

Сортировка чисел

Слайд 25

function compar(a,b) { if(a if(a > b) return 1; if(a ==

function compar(a,b)
{
if(a < b) return -1;
if(a > b) return

1;
if(a == b) return 0;
}
b = new Array(10,6,300,25,18);
document.write("Алфавитный порядок:
");
document.write(b.sort());
document.write("
Числовой порядок:
");
document.write(b.sort(compar));

Пример функции

Слайд 26

{...} if ... else ... ()? while for break continue return Операторы языка

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

Операторы языка

Слайд 27

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

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

оператора или функции.

{...}

Слайд 28

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

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

(логическое_выражение) оператор;
if (логическое_выражение) оператор_1; else оператор_2;
Логическое выражение - это выражение, которое принимает значение true или false.

if ... else ...

Слайд 29

Этот оператор, называемый условным выражением, выдает одно из двух значений в

Этот оператор, называемый условным выражением, выдает одно из двух значений в зависимости

от выполнения некоторого условия. Синтаксис:
(логическое_выражение)? значение_1 : значение_2

()?

Слайд 30

TheFinalMessage = (k>5)? 'Готово!' : 'Подождите...'; if(k>5) TheFinalMessage = 'Готово!'; else

TheFinalMessage = (k>5)? 'Готово!' : 'Подождите...';
if(k>5) TheFinalMessage = 'Готово!';
else TheFinalMessage

= 'Подождите...';

Равносильный код программы

Слайд 31

Оператор while задает цикл. Определяется в общем случае следующим образом: while

Оператор while задает цикл. Определяется в общем случае следующим образом:
while (условие_продолжения_цикла) тело_цикла;
Тело цикла может

быть как простым, так и составным оператором. Составной оператор заключается в фигурные скобки.
Условие_продолжения_цикла является логическим выражением.
Тело исполняется до тех пор, пока верно логическое условие.

while

Слайд 32

Оператор for - это еще один оператор цикла. В общем случае

Оператор for - это еще один оператор цикла. В общем случае он имеет вид:
for

(инициализация_переменных_цикла;
условие_продолжения_цикла;
модификация_переменных_цикла) тело_цикла;

for

Слайд 33

document.write('Кубы чисел от 1 до 100:'); for (n=1; n document.write(' '+n+'

document.write('Кубы чисел от 1 до 100:');
for (n=1; n<=100;n++)
document.write('
'+n+'3 = '+ Math.pow(n,3));
Math - встроенный

объект, предоставляющий многочисленные математические константы и функции, а Math.pow(n,m) вычисляет степенную функцию nm.

Пример

Слайд 34

Оператор break позволяет досрочно покинуть тело цикла. document.write('Кубы чисел, меньшие 5000:');

Оператор break позволяет досрочно покинуть тело цикла.
document.write('Кубы чисел, меньшие 5000:');
for (n=1; n<=100; n++)
{

s=Math.pow(n,3);
if(s>5000) break;
document.write('
'+n+'3 = '+s);
}

break

Слайд 35

Оператор continue позволяет перейти к следующей итерации цикла, пропустив выполнение всех

Оператор continue позволяет перейти к следующей итерации цикла, пропустив выполнение всех нижестоящих операторов

в теле цикла.
document.write('Кубы чисел от 1 до 100, большие 10 000:');
for (n=1; n<=100; n++)
{
s=Math.pow(n,3);
if(s <= 10000) continue;
document.write('
'+n+'3 = '+s);
}

continue

Слайд 36

Оператор return используют для возврата значения из функции или обработчика события.

Оператор return используют для возврата значения из функции или обработчика события.
function sign(n)
{
if (n>0)

return 1;
if (n<0) return -1;
return 0;
}
alert( sign(-3) );

return