SlideShare a Scribd company logo
Вступ до JavaScript
Міністерство освіти і науки України
Волинський національний університет імені Лесі Українки
Кафедра теоретичної та комп’ютерної фізики імені А. В. Свідзинського
Олег Вілігурський
старший викладач кафедри теоретичної та
комп’ютерної фізики імені А. В. Свідзинського
Луцьк - 2021
• Що таке JavaScript?
• Що вміє JavaScript?
• Що НЕ вміє JavaScript?
Основні переваги JavaScript
• Повна інтеграція з HTML/CSS.
• Прості задачі виконуються просто.
• Підтримується усіма поширеними
браузерами і по замовчуванню
ввімкнений.
Основні альтернативи
• Java
• Adobe Flash (ActionScript)
Довідники і специфікації
• Mozilla Developer Network (MDN) –
частково українізований
• MSDN – частково українізований
• htmlbook.ru – довідник по HTML і CSS
• www.w3schools.com/js/
• learn.javascript.ru/ - підручник
Редактори для коду
Вимоги до редакторів:
– Підсвітка синтаксису.
– Автодоповнення.
– «Фолдинг» (folding) – можливість сховати-
розкрити блок коду.
IDE: WebStorm, PHPStorm, Aptana
Легкі редактори: Sublime Text (shareware), Notepad ++, SciTe, Atom
Консоль розробника
• Виклик – клавіша F12
• Запуск сценаріїв:
– Ctrl+Enter (Firefox)
– Enter (Chrome), Shift+Enter для переходу на
новий рядок
Основи мови JavaScript
Тег SCRIPT
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<p>Початок документа</p>
<script>
alert("Привіт, Світе!");
</script>
<p>Кінець документа</p>
</body>
</html>
Задача 1
Створіть код сторінки, яка виводить
повідомленя “Я вивчаю JavaScript!”,
збережіть її на диску, відкрийте у браузері.
Розв’язок
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Задача 1</title>
</head>
<body>
<script>
alert( 'Я вивчаю JavaScript!' );
</script>
</body>
</html>
Додаткові завдання:
• Створіть додаткову команду alert у
цьому самому скрипті
• Створіть нову команду alert в окремому
тезі <script>
Зовнішні скрипти, порядок
виконання
<script src="script.js"></script>
<script src="/path/to/script.js"></script>
<script
src="https://www.facebook.com/rsrc.php/v3/y7/r
/XWlsagvmeBU.js"></script>
Домашнє завдання
Прочитати про абсолютні і відносні шляхи у HTML
<script src="file.js">
alert( 1 ); // ігнорується!
</script>
<script src="file.js"></script>
<script>
alert( 1 );
</script>
Альтернатива:
Асинхронні скрипти: defer/async
• атрибути async і defer використовуються для того,
щоб поки вантажиться зовнішній скрипт – браузер
показав подальшу частину сторінки (за скриптом).
• defer зберігає відносну послідовність скриптів. Крім
того, defer чекає завантаження всієї сторінки.
• async не зберігає послідовність скриптів. Який
скрипт завантажить першим, той і спрацює.
Задача 2
Виведіть alert зовнішнім скриптом
Файл alert.js розмістити в тій самій
директорії
Розв’язок
Код для HTML-файлу:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Задача 2</title>
</head>
<body>
<script src="alert.js"></script>
</body>
</html>
Для файла alert.js:
alert( 'Я вивчаю JavaScript!' );
Задача 3
Яка послідовність виконання скриптів?
<script src="big.js"></script>
<script src="small.js"></script>
<script async src="big.js"></script>
<script async src="small.js"></script>
<script defer src="big.js"></script>
<script defer src="small.js"></script>
Розв’язки
• big.js, small.js.
• small.js, big.js (якщо big.js
довше завантажується).
• big.js, small.js.
Дещо про структуру коду
alert('Один'); alert('Два');
alert('Один')
alert('Два') // поганий стиль
alert('Один');
alert('Два'); // гарний стиль
Коментарі
alert( 'Один' );
// коментар
alert( 'Два' ); // коментар
/* багаторядковий
коментар.
alert( 'Три' ); // не виконується
*/
/*
/* Так не можна!!! (вкладений коментар) */
*/
alert( 'Чотири' );
Гарячі клавіші Ctrl+/ і Ctrl+Shift+/
Сучасний стандарт, "use strict"
Вмикається на початку коду директивою
"use strict";
або
’use strict’;
Скасувати не можна!
Змінні
var book;
book = 'Кобзар';
Або так:
var book = 'Кобзар';
Кілька змінних:
var user = 'John', age = 25, message = 'Hi!';
В іменах змінних допускаються букви,
цифри і символи _, $.
Перший символ не може бути цифрою.
Кирилиця не вітається!
var, class, return, export… – зарезервовані імена!
З незначними відмінностями працює оголошення змінних через
ключове слово let:
let gender = 'male';
Приклади використання
var message;
message = 'Hello!';
message = 'World!'; // поміняли значення
alert( message );
var hello = 'Hello world!';
var message;
message = hello; // скопіювали значення
alert( hello ); // Hello world!
alert( message ); // Hello world!
Константи
var PHONE = '+38 050 123 45 67';
var EARTH_RADIUS = 6371;
Або
const PHONE = '+38 050 123 45 67';
const EARTH_RADIUS = 6371;
Задача 4
1. Оголосіть змінні admin і name.
2. Запишіть в name значення "Вася".
3. Скопіюйте значення з name в admin .
4. Виведіть admin і name .
Правильний вибір імені змінної
• Ніякого трансліту, тільки англійська
• Не боятись довгих імен
• “Верблюжий стиль” (“camelCase”)
• Ім’я повинно відповідати даним
Задача 5
• Створіть ім’я для назви першої страви
в ресторані, назва страви - “Борщ".
Правильне ім’я оберіть самі.
• Створіть змінну для імені користувача
зі значенням “Вася". Ім’я теж на ваш
смак.
Розв’язок
• var firstDishName = "Борщ";
• var userName = "Вася";
Виведення даних
JavaScript може видавати дані різними способами:
•“Вписування” у HTML елемент: innerHTML.
•Виведення у HTML-потік: document.write().
•Виведення у alert-вікно: window.alert() або alert().
•Виведення у консоль браузера: console.log().
innerHTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>innerHTML</title>
</head>
<body>
<h2 id="pageHeader">Заголовок</h2>
<p id="par1">Перший абзац</p>
<p id="par2">Другий абзац</p>
<script>
alert( "Пауза" );
document.getElementById("par1").innerHTML = "Зовсім
інший текст";
</script>
</body>
</html>
innerHTML
Замість
document.getElementById("par1").innerHTML
зазвичай можна використати скорочену форму:
par1.innerHTML
document.write()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2 id="pageHeader">Заголовок</h2>
<p id="par1">Перший абзац</p>
<p id="par2">Другий абзац</p>
<script>
alert( "Пауза" );
document.write("Текст через document.write()");
</script>
</body></html>
!!! Використання document.write() після повного завантаження HTML,
замінить весь існуючий HTML.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>innerHTML</title>
</head>
<body>
<h2 id="pageHeader">Заголовок</h2>
<p id="part1">Перший абзац</p>
<button type="button" onclick="document.write('Якийсь
новий текст')">Кнопка з текстом</button>
</body>
</html>
alert()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2 id="pageHeader">Заголовок</h2>
<p id="par1">Перший абзац</p>
<p id="par2">Другий абзац</p>
<script>
alert( 2 + 2 );
</script>
<p>Третій абзац</p>
</body>
</html>
Повна форма: window.alert()
console.log()
<!DOCTYPE html>
<html>
<body>
<script>
console.log(2 + 2);
console.log("Повідомлення");
</script>
</body>
</html>
Загальна інформація про типи
даних. typeof
• Число «number»
– Всі числа + Infinity + NaN
• Рядок «string»
let str = "Дядя Вася";
str = 'племінник Коля';
• Булевий (логічний) тип «boolean»
true, false
• Спеціальне значення «null»
• Спеціальне значення «undefined»
• Об’єкти «object»
let user = { name: "Вася" };
Оператор typeof повертає тип об’єкта:
typeof x
або
typeof (x)
Основні оператори
• Унарні і бінарні оператори
• Унарні мають один аргумент (операнд),
бінарні – два.
• Той самий оператор може бути і
унарним і бінарним:
x = -x;
z = z - x;
Додавання чисел і рядків,
перетворення типів
var x = 1, y = 2;
alert( x + y); // 3
var a = "сірий" + "вовк";
alert( a ); // сірийвовк !Без
пробіла!
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
+ може перетворювати число в рядок, інші
арифметичні оператори – тільки рядки в
числа
alert( 2 - '1' ); // 1
alert( 6 / '2' ); // 3
var one = "1";
var two = "2";
alert( one + two ); // "12", додаються рядки
alert( +one + +two ); // 3
Пріоритет операторів
16
Unary Plus + …
Unary Negation - …
Prefix Increment ++ …
Prefix Decrement -- …
typeof typeof …
15 Exponentiation … ** …
14
Multiplication … * …
Division … / …
Remainder … % …
13
Addition … + …
Subtraction … - …
3 Assignment
… = …
… += …
… -= …
… **= …
… *= …
… /= …
https://developer.mozilla.org/uk/docs/Web/JavaScript/Refere
nce/Operators/Operator_Precedence
Інкремент/декремент: ++, --
var i = 1;
var a = ++i;
alert(a); // 2
var i = 1;
var a = i++;
alert(a); // 1
Скорочена арифметика
var n = 2;
n = n + 5; // n = 7
n = n * 2; // n = 14
var n = 2;
n += 5;
n *= 2;
alert( n ); // 14
Задача 6
Розберіть наступний код:
var a = b = 1, c, d;
c = ++a; alert(c);
d = b++; alert(d);
c = (2+ ++a); alert(c);
d = (2+ b++); alert(d);
Задача 7
Якого значення набудуть a і x?
var a = 2;
var x = 1 + (a *= 2);
Оператори порівняння
>, <
>=, <=
==
!=
Логічні значення
true
false
Приклад
var a = true;
var b = 3 > 4; // b = false
alert( b ); // false
alert( a != b ); // (true !=
false) правильно, виведе true
Порівняння рядків
Порівнюються посимвольно. При цьому:
'A' < 'B'<...<'a'<...<'а'<'б'
Приклади:
alert( 'кілограм' > 'грам' ); // true
alert( 'метр' > 'сантиметр' ); // false
alert( 'кілометр' > 'кілограм' ); // true
alert( 'граматика' > 'грам' );
// true, бо 'а' > ніж «нічого»
Задача 8
Яким буде результат?
alert( "2" > "14" );
alert( +"2" > +"14" );
Взаємодія з користувачем: alert,
prompt, confirm
alert(повідомлення);
alert( "Привіт" + User );
result = prompt(title, default);
var years = prompt('Ваш вік?', 20);
alert('Вам ' + years + ' років');
При натисканні “Esc” повертає null.
result = confirm(question);
var isHungry = confirm("Хочете
їсти?");
Задача 9
Створіть сторінку, яка запитує у
користувача його ім’я і вітається з ним.
Умовні оператори: if, '?'
if (умова) команда
або
if (умова) {
команди
}
Умова – логічне значення або
приводиться до логічного значення.
0, "", null, undefined, NaN – false
Все інше - true
if - else
var year = prompt('Який зараз рік?',
'');
if (year == 2020) {
alert( 'Правильно!' );
} else {
alert( 'Неправильно!' );
}
else if
var userMass = prompt('Ваша маса?',
'');
if (userMass < 50) {
alert( 'Сходіть-но поїсти' );
} else if (userMass > 120) {
alert( 'Сідайте на дієту' );
} else {
alert( 'Ну й нормально' );
}
Задача 10
Чи виведеться alert?
if ("0") {
alert( 'Привіт' );
}
Тернарний оператор ? :
умова ? значення1 : значення2
access = (age > 14) ? true : false;
те саме, що
if (age > 14) {
access = true;
} else {
access = false;
}
Задача 11
За допомогою конструкції if..else
напишіть код, який отримує значення
prompt, а потім виводить alert:
•1, якщо значення >0,
•-1, якщо <0,
•0, якщо значення =0.
Розв’язок
var value = prompt('Введіть число',
0);
if (value > 0) {
alert( 1 );
} else if (value < 0) {
alert( -1 );
} else {
alert( 0 );
}
Задача 12 (домашнє завдання)
Напишіть код, який буде питати логін (prompt).
Якщо відвідувач вводить “Admin”, то питається
пароль, якщо натиснув “Відміна” (escape) –
виводить “Вхід скасовано”, якщо вводить щось
інше – “Я вас не знаю”.
Пароль перевіряти так. Якщо введено пароль
“javascript”, то виводить “Ласкаво просимо!”, інакше
– “Пароль неправильний”, при відміні – “Вхід
скасовано”.
Вказівка: по натисканню Esc prompt повертає null.
Виняток – Safari, який повертає порожній рядок.
Блок-схема
Розв’язок
Задача 13
Перепишіть if з використанням
конструкції '? :'
if (a + b < 4) {
result = 'Мало';
} else {
result = 'Багато';
}
Розв’язок
result = (a + b < 4) ? 'Мало' : 'Багато';
Задача 14
Перепишіть if…else в '? :'
var gender, message;
if (gender == 'male') {
message = 'Привіт, пане';
} else if (gender == 'female') {
message = 'Привіт, пані';
} else if (gender == '') {
message = 'Привіт';
} else {
message = '';
}
Розв’язок
var gender, message;
gender = prompt("Ваша стать?", '');
message = (gender == 'male') ? 'Привіт, пане' :
(gender == 'female') ? 'Привіт, пані' :
(gender == '') ? 'Привіт' :
'';
alert(message);
Логічні оператори
Логічні ||(АБО), &&(І), !(Не).
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false
Пріоритет у && більший, ніж у ||:
alert( true || true && false ); // true
Логічне НЕ:
var result = !value;
Спочатку аргумент зводиться до логічного
типу true/false, а потім повертається
протилежне значення.
Приклади:
alert( !true ); // false
alert( !0 ); // true
Подвійне логічне НЕ можна використовувати
для перетворення у логічний тип:
alert( !!"рядок" ); // true
alert( !!null ); // false
Задача 15
Напишіть умову if для перевірки того, що
змінна age знаходиться між 14 і 90
включно.
Розв’язок
if (age >= 14 && age <= 90)
Задача 16
Напишіть умову if для перевірки того, що
age НЕ знаходиться між 14 і 90 включно.
Зробіть два варіанти умови: з
використанням оператора НЕ ! і без
цього оператора.
Розв’язок
Перший варіант:
if (!(age >= 14 && age <= 90))
Другий варіант:
if (age < 14 || age > 90)
Перетворення типів
У JavaScript є три перетворення:
Рядкове: String(value) – в рядковому контексті або
при додаванні з рядком.
alert( true + "test" ); // "truetest"
alert( String(null) ); // "null"
Числове: Number(value) – в числовому контексті,
включаючи унарний плюс +value.
var a = +"123"; // 123
var a = Number("123"); // 123
Логічне: Boolean(value) – в логічному контексті,
можна також виконати подвійним НЕ: !!value.
alert( 2 == "два" ); // false
alert( Boolean("no") ); // true
Порівняйте такі фрагменти:
var p = prompt("?", '');
alert (Boolean(Number(p)));
var p = prompt("?", '');
alert (Boolean(p));
Що буде якщо вводити 0 і якщо
натискати кнопку “Скасувати”?
Цикли
Цикл while
while (умова) {
// код, тіло цикла
}
Приклад:
var i = 0;
while (i < 5) {
alert( i );
i++;
}
Цикл do…while
do {
// тіло цикла
} while (умова)
Приклад:
var i = 0;
do {
alert( i );
i++;
} while (i < 3);
Цикл for
for (початок; умова; крок) {
// ... тіло цикла ...
}
Приклад:
var i;
for (i = 0; i < 5; i++) {
alert( i );
}
Або
for (var i = 0; i < 5; i++) {
alert(i); // 0, 1, 2, 3, 4
}
Переривання циклу
Директива break.
Сумація чисел, поки користувач їх вводить
var sum = 0;
while (true) {
var value = +prompt("Введіть число",
'');
if (!value) break; // (*)
sum += value;
}
alert( 'Сума: ' + sum );
Факультативний матеріал
•continue – переривання поточної ітерації
•мітки для break/continue
Цикл for..in для перахунку
властивостей об’єкта – пізніше.
Задача 17
Яке останнє значення виведе цей код і
чому?
var i = 3;
while (i) {
alert( i-- );
}
Розв’язок
1.
Треба врахувати, що alert(i--)
спочатку виводить поточне значення i, а
потім зменшує його на 1.
Задача 18
Які значення виведуть цикли:
for (var i = 0; i < 5; i++) alert( i );
for (var i = 0; i < 5; ++i) alert( i );
Розв’язок
В обох випадках – від 0 до 4.
Алгоритм роботи for:
1. Призначити i=0
2. Перевірити i<5
3. Якщо правильно – виконати тіло цикла
alert(i), потім виконати i++
Задача 19
Виведіть всі парні числа від 2 до 10.
Розв’язки
for (var i=2; i<=10; i += 2) {
alert( i );
}
Або
for (var i = 2; i <= 10; i++) {
if (i % 2 == 0) {
alert( i );
}
}
Або
var i = 2;
while (i<=10) {
alert ( i );
i += 2;
}
Задача 20
Напишіть цикл, який за допомогою prompt
пропонує ввести число, > 100. Якщо
користувач ввів інше число – попросити
ввести ще раз, і так далі. Вихід з циклу –
введення числа > 100 або кнопка
“Скасувати”.
Припускається, що користувач вводить
тільки числа.
Розв’язки
var num =1;
while (num <100 && !!num ==true){
num = prompt ("Введіть число > 100", '');
}
Або
var num;
do {
num = prompt("Введіть число > 100", 0);
} while (num <= 100 && num != null);
Конструкція switch
Синтаксис:
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
Приклад:
var a = 'весна';
switch (a) {
case 'зима':
alert( 'холодно' );
break;
case 'весна':
alert( 'тепло' );
break;
case 'літо':
alert( 'спекотно' );
break;
default:
alert( 'мокро' );
}
Якщо break нема, то виконання піде нижче по
наступних case, при цьому інші перевірки
ігноруються.
var a = 'весна';
switch (a) {
case 'зима':
alert( 'холодно' );
case 'весна':
alert( 'тепло' );
case 'літо':
alert( 'спекотно' );
default:
alert( 'мокро' );
}
Виведе по черзі тепло, спекотно, мокро.
Групування case
Кілька значень case можна згрупувати.
switch (new Date().getDay()) {
case 4:
case 5:
text = "Скоро вихідні";
break;
case 0:
case 6:
text = "Сьогодні вихідний";
break;
default:
text = "Вихідні колись будуть…";
}
alert(text);
Фрагмент new Date().getDay() розглянемо пізніше. Він
виводить номер дня тижня, причому неділя – 0,
понеділок – 1…
Задача 21
Перепишіть код з if у switch.
var a = +prompt('a?', '');
if (a == 0) {
alert( 0 );
}
if (a == 1) {
alert( 1 );
}
if (a == 2 || a == 3) {
alert( '2,3' );
}
Розв’язок
var a = +prompt('a?', '');
switch (a) {
case 0:
alert( 0 );
break;
case 1:
alert( 1 );
break;
case 2:
case 3:
alert( '2,3' );
break;
}
Функції
Синтаксис:
function name(parameter1, parameter2,
parameter3) {
код, який має виконуватись
}
Приклад:
function sayHello() {
alert( 'Привіт!' );
}
sayHello();
sayHello();
Локальні змінні
Функції можуть містити локальні змінні, які будуть
видимі тільки всередині функції. Оголошуються через
var.
function showMessage() {
var message = 'текст у локальній змінній';
alert( message );
}
showMessage(); // тут все спрацює
alert( message ); // <-- буде помилка
Блоки if/else, switch, for, while, do..while
не обмежують область видимості змінних.
function count() {
for (var i = 0; i < 3; i++) {
var j = i * 2;
}
alert( i ); // i=3, останнє значення i,
при якому цикл перестав працювати
alert( j ); // j=4, останнє значення j,
яке обчислив цикл
}
count();
Чи можна поза функцією написати alert( i )?
Зовнішні і глобальні змінні
Функція може працювати зі змінними, оголошеними зовні:
var day = 'понеділок';
function showDay() {
alert( day ); // виведення зовнішньої змінної
day = 'вівторок'; // (1) зміна значення зовнішньої
змінної
var message = 'Сьогодні ' + day;
alert( message );
}
alert( day ); // понеділок
showDay();
alert( day ); // вівторок, бо функція змінила значення
змінної
Змінна, оголошена на рівні всього скрипта називається
Параметри функції
Функції можна передавати параметри
(аргументи), з якими вона працюватиме.
function rectangle(a,b) {
var S = a*b;
var P = 2*(a+b);
alert ("Площа прямокутника = " + S);
alert ("Периметр прямокутника = " +
P);
}
rectangle(2,3);
Аргументи по замовчуванню
У функції може бути будь-яка кількість аргументів. Якщо якийсь
аргумент при виклику функції не заданий, він буде рівним
undefined.
Приклад:
function rectangle(a,b) {
alert ( "a = " + a + ", b = " + b );
var S = a*b;
var P = 2*(a+b);
alert ("Площа прямокутника = " + S);
alert ("Периметр прямокутника = " + P);
}
rectangle(2);
Виведе спочатку “a = 2, b = undefined”, а потім “Площа
прямокутника = NaN”, “Периметр прямокутника = NaN”.
Завжди можна за своїм бажання задати значення аргументів по
замовчуванню. Наприклад:
function rectangle(a,b) {
alert ( "a = " + a + ", b = " + b );
if (b === undefined) {
b = a;
alert( "Будемо вважати, що маємо справу з квадратом"
);
}
var S = a*b;
var P = 2*(a+b);
alert ("Площа прямокутника = " + S);
alert ("Периметр прямокутника = " + P);
}
rectangle(2);
Альтернативний спосіб (замість блоку if):
b = b || a;
“Зайві” аргументи ігноруються.
rectangle(2, 3, 4, "ще щось"); // все добре працює
Повернення значення. return
function getArea(a,b) {
return a*b;
}
function getPerimeter(a,b) {
return 2*(a+b);
}
var S = getArea(2,3);
alert( "S = " + S );
alert( "P = " + getPerimeter(2,3) );
Директив return може бути кілька
function showSign(number) {
if (number > 0) {
return "Плюс";
} else if (number < 0) {
return "Мінус";
} else {
return;
}
}
alert( showSign(1) ); // Плюс
alert( showSign(-1) ); // Мінус
alert( showSign(0) ); // undefined
Задача 22
Напишіть функцію, яка виводить текст “Я
вивчаю JavaScript” і викличте її.
Задача 23
Напишіть функцію, яка виводить текст “Я
вивчаю parameter”, де parameter має
вводитись як аргумент. Викличте її з
аргументом JavaScript.
Задача 24
Напишіть функцію min(a,b), яка повертає
менше з чисел a,b.
Приклад роботи:
min(2, 5) == 2
min(3, -1) == -1
min(1, 1) == 1
Задача 25
Напишіть функцію pow(x,n), яка повертає
x в степені n, тобто перемножує x на себе
n разів і повертає результат. Вважається,
що x і n – цілі додатні числа.
Створіть сторінку, яка питає x і n, а потім
виводить результат pow(x,n).
Розв’язок
function pow(x, n) {
var result = x;
for (var i = 1; i < n; i++) {
result *= x;
}
return result;
}
var x = prompt("x?", '');
var n = prompt("n?", '');
if (n <= 1) {
alert( 'Степінь ' + n + ' не підтримується, введіть ціле
n > 1' );
} else {
alert( pow(x, n) );
}
Функціональні вирази.
Function Expression
Синтаксис:
var f = function(параметри) {
// тіло функції
};
Основна відмінність: функції, оголошені як
Function Declaration, створюються
інтерпретатором до виконання коду.
myFunction(); // 1
function myFunction() {
alert( 1 );
}
Функціональні вирази дозволяють застосувати
умовне оголошення функції, наприклад:
var age = prompt('Ваш вік?');
var sayHi;
if (age >= 18) {
sayHi = function() {
alert( 'Заходьте' );
}
} else {
sayHi = function() {
alert( 'До 18 не можна' );
}
}
sayHi();
Рекурсія
В тілі функції можна викликати інші функції, зокрема,
саму себе.
function power(base, exponent) {
if (exponent == 0)
return 1;
else
return base * power(base, exponent - 1);
}
alert(power(2, 3));
Задача 26
Напишіть функцію sumTo(n), яка для
даного n рахує суму чисел від 1 до n.
Задачу можна розв'язати трьома
способами:
1. Через цикл.
2. Через рекурсію.
3. Через формулу суми арифметичної
прогресії.
Розв'язки
1.
function sumTo(n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
2.
function sumTo(n) {
if (n == 1) return 1;
return n + sumTo(n - 1);
}
alert( sumTo(100) );
3.
function sumTo(n) {
return n * (n + 1) / 2;
}
Задача 27
Напишіть функцію для обчислення
факторіала числа.
n! = n*(n-1)*(n-2)*...*2*1.
Розв'язок
function factorial(n) {
return (n != 1) ? n * factorial(n - 1) : 1;
}
alert( factorial(5) ); // 120
Задача 28
Послідовність чисел Фібоначчі визначається формулою
Fn = Fn-1 + Fn-2. Тобто наступне число є сумою двох
попередніх.
Перші два числа рівні 1, далі 2 (1+1), 3(1+2), 5(2+3) і так
далі: 1, 1, 2, 3, 5, 8, 13, 21....
Напишіть функцію fib(n), яка повертає n-е число
Фібоначчі. Приклад роботи:
function fib(n) { /* ваш код */ }
alert( fib(3) ); // 2
alert( fib(7) ); // 13
alert( fib(77)); // 5527939700884757
Розв'язок
Пряма рекурсія:
function fib(n) {
return n <= 1 ? n : fib(n - 1) +
fib(n - 2);
}
alert( fib(3) ); // 2
alert( fib(7) ); // 13
// fib(77); // краще не запускати.
“Підвісить” браузер
Обчислення в циклі:
function fib(n) {
var a = 1,
b = 1;
for (var i = 3; i <= n; i++) {
var c = a + b;
a = b;
b = c;
}
return b;
}
alert( fib(3) ); // 2
alert( fib(7) ); // 13
alert( fib(77) ); // 5527939700884757
Методи і властивості
Всі значення у JavaScript, крім null і
undefined, містять набір допоміжних
функцій і значень, які називаються
методами і властивостями відповідно.
Вони викликаються через крапку.
Методи і властивості рядкових
величин
Властивість str.length
alert( "Якийсь текст".length ); // 12
var str = "Якийсь текст";
alert( str.length ); // 12
Методи викликаються з додаванням ().
Метод str.toUpperCase()
var txt = "Якийсь текст";
alert( txt.toUpperCase() ); // ЯКИЙСЬ ТЕКСТ
Аналогічно - toLowerCase()
Деякі спеціальні символи
n New line
r Carriage return
t Tab
Приклад:
alert( 'ОдинnДва' );
Екранування спеціальних символів
' '
" "
Властивість length
var str = "Myn";
alert( str.length ); // 3
Метод charAt()
var str = 'Реве та стогне Дніпр
широкий';
alert( str.charAt(0) ); // Р
Альтернативний спосіб:
alert( str[0] ); // Р
Пошук підрядка
indexOf(підрядок[, стартова_позиція]).
Приклад:
var someText = "Думи мої, думи
мої,nЛихо мені з вами!";
alert( someText.indexOf("Думи") ); // 0
alert( someText.indexOf("думи") ); // 10
alert( someText.indexOf("лихо") ); // -1
Виділення підрядка
substring(start [, end])
не включаючи end!
Приклад:
var str = "Hello world!";
var res = str.substring(0, 4);
alert( res ); // Hell
alert( str.substring(6) ); //
world!
substr(start [, length])
Приклад:
var str = "Hello world!";
var res = str.substr(1, 4); // ello
alert( str.substr(6) ); // world!
slice(start [, end])
не влючаючи end!
Приклад:
var str = "Hello world!";
var res = str.slice(1, 4);
alert( res ); // ell
alert( str.slice(6) ); // world!
У методі substring від’ємні аргументи
заміняються на 0, а завеликі обрізаються до
довжини рядка. Якщо start > end, то
аргументи міняються місцями.
У методі slice від’ємні аргументи
відраховуються від кінця рядка.
alert( "JavaScript".substring(4, -1) ); // Java
alert( "JavaScript".slice(4, -1) ); // Scrip
Метод replace
str.replace(підрядок, новий_підрядок)
Заміняється тільки перше входження!
Приклад:
var str = "У лісі, лісі темному";
var str2 = str.replace("лісі","парку");
alert( str2 ); // = "У парку, лісі
темному"
alert( str ); // "У лісі, лісі
темному";
Задача 29
Напишіть функцію ucFirst(str), яка
повертає рядок str з великою першою
буквою, наприклад:
ucFirst("вася") == "Вася";
ucFirst("") == ""; // нема помилки
при порожньому рядку
Розв’язок
function ucFirst(str) {
if (!str) return str; // спрацює
тільки для порожнього рядка
return str[0].toUpperCase() +
str.slice(1);
}
alert( ucFirst("вася") );
Задача 30
Напишіть функцію checkSpam(str), яка
повертає true, якщо рядок str містить
"porn" або "xxx", а інакше false. Функція
повинна бути нечутливою до регістру.
Розв’язок
function checkSpam(str) {
var lowerStr = str.toLowerCase();
return !!((lowerStr.indexOf('porn')+1) ||
(lowerStr.indexOf('xxx')+1));
}
alert( checkSpam('best pOrN movies') );
alert( checkSpam('free xxxxx') );
alert( checkSpam("Голосуйте за Івана!") );
Задача 31
Напишіть функцію countSubstr(str), яка
рахуватиме всі входження підрядка у
рядок. Наприклад:
alert( countSubstr("Думи мої,
думи мої/nЛихо мені з вами!",
"Думи") ); // 2
Розв’язок 1
var txt = "Думи мої, думи мої/nЛихо мені з вами!";
var substr = "Думи";
function countSubstr(str, substr) {
var counter = 0;
var lowerStr = str.toLowerCase();
var lowerSubstr = substr.toLowerCase();
while (lowerStr.indexOf(lowerSubstr)!=-1) {
lowerStr =
lowerStr.slice(lowerStr.indexOf(lowerSubstr)+1);
counter++;
}
return counter;
}
alert( countSubstr(txt, substr) );
Скажіть, що буде виводитись такими командами:
alert(txt);
Розв’язок 2
function countSubstr2(str, substr) {
var counter = 0;
var pos = 0;
var lowerStr = str.toLowerCase();
var lowerSubstr = substr.toLowerCase();
while (true) {
var foundPos =
lowerStr.indexOf(lowerSubstr, pos);
if (foundPos == -1) break;
pos = foundPos + 1;
counter++;
}
return counter;
Задача 32
Напишіть функцію truncate(str,
maxlength), яка перевіряє довжину
рядка str, і якщо вона > maxlength –
заміняє кінець str на "...", так щоб
її довжина стала рівна maxlength.
Приклад роботи:
truncate("Еней був парубок моторний І
хлопець хоть куди козак", 20) = "Еней
був парубок ...";
truncate("Котляревський", 20) = "
Котляревський";
Розв’язок
function truncate(str, maxlength) {
if (str.length > maxlength) {
return str.slice(0, maxlength - 3) +
'...'; // довжина стане рівною
maxlength
}
return str;
}
alert( truncate("Еней був парубок
моторний І хлопець хоть куди козак",
20) );
alert( truncate("Котляревський", 20) );
Методи і властивості числових
величин
Метод num.toFixed(n)
Округлює число num до n знаків після десяткової крапки,
при необхідності доповнюючи нулями до заданої довжини і
повертає в рядковому вигляді.
var n = 12.345;
alert( n.toFixed(2) ); // "12.35"
alert( n.toFixed(0) ); // "12"
alert( n.toFixed(5) ); // "12.34500"
alert(12.toFixed(1)); // помилка! Можна так:
alert( 12..toFixed(1) ); // 12.0
Запис числа в різних формах:
alert( 0xFF ); // 255 шістнадцяткова
alert( 3e5 ); // 300000 експоненціальна
alert( 0b1010101 ); // 85 двійкова
Перетворення в число:
var s = "12.34";
alert( +s ); // 12.34
alert( +"12test" ); // NaN
alert( '12.34' / "-2" ); // -6.17
Перетворення числа в іншу систему:
var n = 255;
alert( n.toString(16) ); // ff
alert( n.toString(2) ); //
11111111
Математичні операції округлення
Math.floor Округлює вниз
Math.ceil Округлює вгору
Math.round Округлює до найближчого цілого
alert( Math.floor(3.1) ); // 3
alert( Math.ceil(3.1) ); // 4
alert( Math.round(3.1) ); // 3
Задача 33
а) Округліть число до другого знаку після
десяткової крапки.
3.456  3.46
б) Округліть число до сотень.
3456  3500
Розв’язок
var n1 = 3.456;
alert( Math.round(n1 * 100) / 100 );
var n2 = 3456;
alert( Math.round(n2 / 100) * 100 );
Деякі математичні методи
Math.sin(x) Синус
Math.cos(x) Косинус
Math.sqrt(x) Квадратний корінь
Math.pow(x, exp) xexp
Math.abs(x) Абсолютне значення
Math.max(a, b, c...)
Math.min(a, b, c...)
Math.random() випадкове число в інтервалі [0,1)
Задача 34
а) Напишіть код для генерації
випадкового числа від min до max.
б) Напишіть код для генерації
випадкового цілого числа від min до max
(включаючи min і max).
Розв’язок
а)
var min = 5, max = 10;
alert( min + Math.random() * (max - min) );
б)неправильний розв’язок:
function randomInteger(min, max) {
var rand = min + Math.random() * (max - min)
rand = Math.round(rand);
return rand;
}
alert( randomInteger(1, 3) ); // 2 випадає
вдвічі частіше, ніж 1 і 3.
б) один з варіантів правильного розв’язку
function randomInteger(min, max) {
var rand = min + Math.random() * (max + 1 - min);
rand = Math.floor(rand);
return rand;
}
Об’єкти
У JavaScript об’єкт є набором
найменованих властивостей і методів-
функцій. Об’єкти можуть зберігатись у
змінних, доступ до властивостей і методів
– через “крапковий” синтаксис.
Створення об’єктів
Два способи:
o = new Object();
o = {}; // пусті фігурні дужки
Приклади:
var rak = {};
var koza = {
name: "Дереза",
age: 12,
talk: function () { alert("Заколю тебе рогами...");
}
};
alert( koza.name ); // Дереза
koza.talk(); // Заколю тебе рогами...
Додавання властивості:
rak.name = "Неборак";
rak.age = 60;
koza.color = "white";
Видалення:
delete koza.color;
Перевірка наявності властивості – in:
if ("name" in koza) {
alert( "Властивість name існує" );
}
Якщо властивості нема:
alert( koza.color ); // undefined
Інший спосіб доступу до властивостей:
об’єкт['властивість'].
var person = {};
person['name'] = 'Колобок';
alert( person['name'] ); //
Колобок
person.name = 'Солом'яний бичок';
alert( person['name'] ); //
Солом'яний бичок
Квадратні дужки дозволяють використовувати як ім’я
властивості будь-який рядок:
var person = {};
person['колір волосся'] = 'темний';
Допустимі обидва способи:
var menuSetup = {
width: 300,
'height': 200, // можна в лапках, можна
без
title: "Menu"
};
var menuSetup = {};
menuSetup.width = 300;
menuSetup.height = 200;
Значенням може бути навіть інший об’єкт
var character = {
name: "Баба Яга",
age: 700,
transport: {
name: "ступа",
capacity: 1,
maxSpeed: 200
}
}
alert( character.name ); // Баба Яга
alert( character.transport.name ); // Ступа
Задача 35
Виконайте таку послідовність дій:
Створіть порожній об’єкт user.
Додайте властивість name зі значенням
Вася.
Додайте властивість surname зі
значенням Дмитрук.
Поміняйте значення name на Сергій.
Видаліть властивість name з об’єкта.
Виведіть властивість surname.
Перебір властивостей об‘єкта
for (key in obj) {
/* ... якісь дії з obj[key] ...
*/
}
Зазвичай змінну key оголошують
прямо в циклі:
for (var key in menu) {
// ...
}
Можна використовувати й інші імена
для змінної: for(var propName in
Приклад ітерації по властивостях:
var character = {
name: "Баба Яга",
age: 700,
transport: {
name: "ступа",
capacity: 1,
maxSpeed: 200
}
}
for (var key in character) {
alert("ключ: " + key + "nзначення: " +
character[key]);
}
Задача 36
Напишіть функцію countProp для
підрахунку кількості властивостей об’єкта
character.
Розв’язок
function countProp (obj){
var counter = 0;
for (var key in obj) {
counter++;
}
return counter;
}
alert( countProp(character) );
P.S. Можливий коротший спосіб підрахунку:
Object.keys(character).length (див. Масиви).
Задача 37
Напишіть функцію isEmpty(obj), яка
повертає true, якщо в об’єкті нема
властивостей і false – якщо є хоч
одна властивість.
Приклад роботи:
var schedule = {};
alert( isEmpty(schedule) ); // true
schedule["8:30"] = "підйом";
alert( isEmpty(schedule) ); // false
Розв’язок
function isEmpty(obj) {
for (var key in obj) {
return false;
}
return true;
}
Задача 38
Є об’єкт salaries з зарплатами.
var salaries = {
"Ахванасій": 5000,
"Савка": 6000,
"Соломон": 2500
};
Напишіть код, який виведе суму
всіх зарплат.
Розв’язок
var salaries = {
"Ахванасій": 5000,
"Савка": 6000,
"Соломон": 2500
};
var sum = 0;
for (var key in salaries) {
sum += salaries[key];
}
alert( sum );
Задача 39
Є об’єкт salaries з зарплатами. Напишіть
код, який виведе ім’я персонажа, у якого
найбільша зарплата.
Якщо об’єкт порожній, має виводитись
“Ніхто нічого не заробив”.
Розв’язок
var leader = "", maxValue = 0;
for (var key in salaries) {
if (salaries[key] > maxValue) {
maxValue = salaries[key];
leader = key;
}
}
alert( leader || "Ніхто нічого не
заробив" );
Задача 40
Напишіть функцію multiplyNumeric, яка множить всі числові властивості на 2.
Наприклад:
var salaries = { // до виклику
"Ахванасій": 5000,
"Савка": 6000,
"Митродора Пилипівна": "багато"
};
multiplyNumeric(salaries);
var salaries = {// після виклику
"Ахванасій": 10000,
"Савка": 12000,
"Митродора Пилипівна": "багато"
};
P. S. Для перевірки на число використовуйте функцію:
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n)
}
Розв’язок
function multiply(obj) {
for (var key in obj) {
if( isNumeric(obj[key]) ) {
obj[key] *= 2;
}
}
}
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n)
}
multiply( salaries );
Відмінності об’єктів від змінних
У змінній, якій надається об’єкт, зберігається
лише посилання на нього!
var user = { name: 'Вася' };
var admin = user;
admin.name = 'Люда';
alert(user.name); // 'Люда'
alert(admin.name); // 'Люда'
Зі звичайними змінними:
var user = 'Вася';
var admin = user;
admin = 'Люда';
alert( user ); // 'Вася'
Масиви з числовими індексами
Масив (Array) – різновид об’єкта,
призначений для зберігання багатьох
величин в одній змінній.
Приклади створення:
var arr = [];
var fruits = ["Яблуко", "Апельсин",
"Слива"];
Доступ до елементів масиву:
var fruits = ["Яблуко", "Апельсин",
"Слива"];
alert( fruits[0] ); // Яблуко
alert( fruits[1] ); // Апельсин
alert( fruits[2] ); // Слива
Заміну і додавання можна виконувати так:
fruits[2] = 'Груша'; // ["Яблуко",
"Апельсин", "Груша"]
fruits[3] = 'Лимон'; // ["Яблуко",
"Апельсин", "Груша", "Лимон"]
Число елементів масиву виводиться властивістю
length.
var fruits = ["Яблуко", "Апельсин", "Слива"];
alert( fruits.length ); // 3
alert виводить всі елементи масиву через
кому.
Елементом масиву може бути також інший
масив чи будь-який об’єкт.
var harvest = ["овочі", "зернові",
fruits];
alert( harvest ); //
овочі,зернові,Яблуко,Апельсин,Слива
Задача 41
З масива fruits невідомої довжини отримайте
останній елемент.
Поміняйте його значення на значення
елемента з номером 0.
Розв’язок
alert( fruits[fruits.length - 1] );
fruits[fruits.length - 1] =
fruits[0];
alert( fruits );
Методи pop/push, shift/unshift
pop – видаляє останній елемент з масиву
і повертає його:
var fruits = ["Яблуко", "Апельсин",
"Слива"];
alert( fruits.pop() ); // видалили "Слива"
alert( fruits ); // Яблуко, Апельсин
push – додає елемент в кінець масиву.
var fruits = ["Яблуко", "Апельсин"];
fruits.push("Груша");
alert( fruits ); // Яблуко, Апельсин, Груша
shift – видаляє перший елемент і
повертає його:
var fruits = ["Яблуко", "Апельсин",
"Груша"];
alert( fruits.shift() );
alert( fruits ); // Апельсин, Груша
unshift – додає елемент на початок:
var fruits = ["Апельсин", "Груша"];
fruits.unshift('Яблуко');
alert( fruits ); // Яблуко, Апельсин, Груша
push і unshift можуть додавати зразу
кілька елементів.
shift і unshift повільніші за pop і push.
Масив з “дірами”:
var a = [];
a[0] = 0;
a[5] = 5;
alert( a ); // 0,,,,,5
alert( a.length ); // 6
Задача 42
Створіть масив cars з елементами "Volvo",
"BMW".
Додайте в кінець значення "Mercedes".
Замініть передостаннє значення на "Toyota".
Код такої операції повинен працювати з
масивом будь-якої довжини.
Видаліть перше значення масиву і виведіть його
alert’ом.
Додайте на початок значення "Nissan" і
"Renault".
Розв’язок
var cars = ["Volvo", "BMW"];
cars.push("Mercedess");
cars[cars.length - 1] = "Toyota";
alert( cars.shift() );
cars.unshift(["Nissan","Renault"]);
alert( cars );
Цикл по елементах:
var arr = ["Яблуко", "Апельсин", "Груша"];
for (var i = 0; i < arr.length; i++) {
alert( arr[i] );
}
Можна й for..in, але він значно
повільніший.
for (var key in arr) {
alert( arr[key] ); // Яблуко, Апельсин,
Груша
}
Задача 43
Напишіть функцію filterRange(arr, a, b), яка
отримує масив чисел arr і повертає новий
масив, який містить тільки числа з arr в
диапазоні від a до b. Тобто перевірка має
вигляд a ≤ arr[i] ≤ b. Функція не повинна
міняти arr. Наприклад:
var arr = [5, 4, 3, 8, 0];
var filtered = filterRange(arr, 3, 5);
// тепер filtered = [5, 4, 3]
// arr не змінився
Підказка: створіть тимчасовий порожній
масив results і заповнюйте відфільтрованими даними.
Розв’язок
function filterRange(arr, a, b) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] >= a && arr[i] <= b) {
result.push(arr[i]);
}
}
return result;
}
var arr = [5, 4, 3, 8, 0];
var filtered = filterRange(arr, 3, 5);
alert( filtered );
Властивістю length можна керувати довжиною
масиву:
var arr = [1, 2, 3, 4, 5];
arr.length = 2; // вкоротили до 2
елементів
alert( arr ); // [1, 2]
arr.length = 5; // відновили довжину
alert( arr[3] ); // undefined:
значення не вернулись
Можна очистити масив так:
arr.length=0;
Ще один спосіб створення масиву:
var arr = new Array("Яблуко", "Груша", "Слива");
new Array(n) – створюється масив довжини n, але
без елементів! Цей спосіб краще уникати.
Багатовимірні масиви
Оскільки елементом масиву може бути навіть інший масив,
це дозволяє створювати багатовимірні масиви на зразок:
var matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
alert( matrix[1][1] ); // центральний елемент -
5
Методи масивів
split
string.split(separator[, limit])
Приклади:
var names = 'Іван, Степан, Петро, Віктор';
var arr = names.split(', ');
alert(arr); // Іван,Степан,Петро,Віктор
var names = 'Іван, Степан, Петро, Віктор';
var arr = names.split(', ', 3);
alert(arr); // Іван,Степан,Петро
var str = "слово";
alert( str.split('') ); // с,л,о,в,о
join
array.join([separator])
Елементи масиву об’єднуються в рядок.
Приклади:
var fruits = ["Banana", "Orange", "Apple",
"Mango"];
var energy = fruits.join();
alert( energy ); // Banana,Orange,Apple,Mango
var fruits = ["Banana", "Orange", "Apple",
"Mango"];
var energy = fruits.join(" + ");
alert( energy ); // Banana + Orange + Apple +
Mango
splice
array.splice(index[, howmany, item1, ....., itemX])
Видаляє howmany елементів масиву починаючи з
індекса index і вставляє на їх місце item1, ....., itemX.
Якщо index від’ємний – відраховується з кінця.
Метод повертає масив з видалених елементів.
Приклад:
var users = ["Люда", "Марина", "Іра", "Вася",
"Коля"];
var boys = users.splice(3, 2, "Ніна", "Зіна");
alert( users ); // Люда,Марина,Іра,Ніна,Зіна
alert( boys ); // Вася,Коля
Задача 44
У масиві numbers = [1, 2, 3, 4, 5, 6,
7, 8] поміняйте місцями першу і другу
половину. Тобто результатом виконання коду
має бути масив [5,6,7,8,1,2,3,4].
Розв’язок
var numbers = [1, 2, 3, 4, 5, 6, 7, 8];
var arr1 = numbers.splice(0, numbers.length/2);
arr1.splice(0,0,numbers);
alert( arr1 );
slice
array.slice(start, end)
Повертає ділянку масиву від begin до end, не включаючи end.
Вихідний масив при цьому не змінюється.
Приклад:
var numbers = ["Один", "Два", "Три", "Чотири",
"П'ять"];
alert( numbers.slice(1, 4) ); // Два,Три,Чотири
alert( numbers ); // Один,Два,Три,Чотири,П'ять
Якщо аргументу end нема – копіювання йде до
кінця масиву.
Від’ємні індекси відраховуються з кінця.
sort()
array.sort([compareFunction])
compareFunction – функція порівняння.
sort() – порівняння рядкових величин у
порядку зростання:
var arr = [ 1, 2, 15 ];
arr.sort();
alert( arr ); // 1, 15, 2 !!!
Функція сортування дозволяє задавати свій порядок
сортування. Вона отримує два аргументи a, b і повинна
повертати число > 0, якщо a > b. Приклад:
function compareNumeric(a, b) {
return (a > b) ? 1 : -1;
}
var arr = [ 1, 2, 15 ];
arr.sort(compareNumeric); // тільки ім’я
функції!
alert(arr); // 1, 2, 15
Можна задавати compareNumeric простіше:
function compareNumeric(a, b) {
return a - b;
}
Задача 45
Нехай є масив
var points = [13, 2, 3, 0, -5, 6, 17, 8, 9, 10];
Напишіть функцію getMinMax(arr), яка
отримує масив чисел і виводить масив з
двох чисел – мінімального і максимального
елементів вихідного масиву.
Розв’язок (з коментарями і належним
оформленням коду) надішліть на адресу
viligurskyi@gmail.com
reverse
array.reverse()
Змінює порядок елементів у масиві.
var fruits = ["Banana", "Orange", "Apple"];
fruits.reverse();
Результат: Apple,Orange,Banana
Задача 46
Напишіть функцію flipSentence, яка міняє
порядок слів у тексті "Жили-були дід і
баба" на зворотний.
Розв’язок (з коментарями і
належним оформленням коду)
надішліть на адресу
viligurskyi@gmail.com
Задача 47
Є текст "Іван Сидорук, Петро Гнатюк, Василь
Коваленко". Треба написати функцію
change, яка видає текст, де ім’я і прізвище
переставлені місцями.
Розв’язок (з коментарями і
належним оформленням коду)
надішліть на адресу
viligurskyi@gmail.com
concat
array1.concat(array2, array3, ..., arrayX)
array2, array3, ... – масиви чи інші елементи.
Приклад:
var arr1 = [1, 2];
var arr2 = [3, 4];
var newArr = arr1.concat(arr2, 5);
alert( newArr ); // 1,2,3,4,5

More Related Content

What's hot

Портфоліо вчителя англійської мови
Портфоліо вчителя англійської мовиПортфоліо вчителя англійської мови
Портфоліо вчителя англійської мовиAngel Dak
 
Портфоліо вчителя інформатики Смереки О.М.
Портфоліо вчителя інформатики Смереки О.М.Портфоліо вчителя інформатики Смереки О.М.
Портфоліо вчителя інформатики Смереки О.М.Смерека Олександра
 
Dijalnisnyj
DijalnisnyjDijalnisnyj
Dijalnisnyj
bymbarishka
 
Розв’язування компетентнісних задач
Розв’язування компетентнісних задачРозв’язування компетентнісних задач
Розв’язування компетентнісних задач
Марина Конколович
 
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Igor igorvolinec
 
інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018
ssuserb2b046
 
Portfolio
PortfolioPortfolio
Portfolio
ivon79
 
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.КонотопТворчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
Юлія Артюх
 
Формувальне оцінювання навчальних досягнень учнів у НУШ
Формувальне оцінювання навчальних досягнень учнів у НУШФормувальне оцінювання навчальних досягнень учнів у НУШ
Формувальне оцінювання навчальних досягнень учнів у НУШ
ssuserea2612
 
Етапи створення веб сайтів
Етапи створення веб сайтівЕтапи створення веб сайтів
Етапи створення веб сайтів
Yulia Vlasenko
 
інтегрований урок перезентація до семінару
інтегрований урок перезентація до семінаруінтегрований урок перезентація до семінару
інтегрований урок перезентація до семінару
Anastasia Timoschuk
 
презентація досвіду роботи вчителя англійської мови синенко л.г.
презентація досвіду роботи вчителя англійської мови синенко л.г.презентація досвіду роботи вчителя англійської мови синенко л.г.
презентація досвіду роботи вчителя англійської мови синенко л.г.
Петрівська школа
 
Вчені біологи України та їх вклад в науку
Вчені біологи України та їх вклад в наукуВчені біологи України та їх вклад в науку
Вчені біологи України та їх вклад в науку
chetverg2015
 
Завдання II етапу Всеукраїнської олімпіади з історії
Завдання II етапу Всеукраїнської олімпіади з історіїЗавдання II етапу Всеукраїнської олімпіади з історії
Завдання II етапу Всеукраїнської олімпіади з історії
Tetjana Bilotserkivets
 
сзш № 12 атестація 2013 ....
сзш № 12 атестація 2013 ....сзш № 12 атестація 2013 ....
сзш № 12 атестація 2013 ....alla123456
 
презентація на урок
презентація на урокпрезентація на урок
презентація на урок
tania_semeshchuk
 
фінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptxфінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptx
ssuserde75c6
 
Розвиток творчих компетентностей і креативного мислення на уроках інформатики
Розвиток творчих компетентностей і креативного мислення на уроках інформатикиРозвиток творчих компетентностей і креативного мислення на уроках інформатики
Розвиток творчих компетентностей і креативного мислення на уроках інформатики
Inna Gornikova
 
портфоліо вчителя анг мови кзш №14 долід н.і. (2)
портфоліо вчителя анг мови кзш №14 долід н.і. (2)портфоліо вчителя анг мови кзш №14 долід н.і. (2)
портфоліо вчителя анг мови кзш №14 долід н.і. (2)
dolidn
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування Lazarus
Юлія Артюх
 

What's hot (20)

Портфоліо вчителя англійської мови
Портфоліо вчителя англійської мовиПортфоліо вчителя англійської мови
Портфоліо вчителя англійської мови
 
Портфоліо вчителя інформатики Смереки О.М.
Портфоліо вчителя інформатики Смереки О.М.Портфоліо вчителя інформатики Смереки О.М.
Портфоліо вчителя інформатики Смереки О.М.
 
Dijalnisnyj
DijalnisnyjDijalnisnyj
Dijalnisnyj
 
Розв’язування компетентнісних задач
Розв’язування компетентнісних задачРозв’язування компетентнісних задач
Розв’язування компетентнісних задач
 
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
Поняття мови програмування. Складові мови програмування (інформатика 8 клас)
 
інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018інформатика. 5 клас. мій конспект. 2018
інформатика. 5 клас. мій конспект. 2018
 
Portfolio
PortfolioPortfolio
Portfolio
 
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.КонотопТворчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
Творчий звіт учителя іноземної мови Суховєєвої Н.В., СШ 9, м.Конотоп
 
Формувальне оцінювання навчальних досягнень учнів у НУШ
Формувальне оцінювання навчальних досягнень учнів у НУШФормувальне оцінювання навчальних досягнень учнів у НУШ
Формувальне оцінювання навчальних досягнень учнів у НУШ
 
Етапи створення веб сайтів
Етапи створення веб сайтівЕтапи створення веб сайтів
Етапи створення веб сайтів
 
інтегрований урок перезентація до семінару
інтегрований урок перезентація до семінаруінтегрований урок перезентація до семінару
інтегрований урок перезентація до семінару
 
презентація досвіду роботи вчителя англійської мови синенко л.г.
презентація досвіду роботи вчителя англійської мови синенко л.г.презентація досвіду роботи вчителя англійської мови синенко л.г.
презентація досвіду роботи вчителя англійської мови синенко л.г.
 
Вчені біологи України та їх вклад в науку
Вчені біологи України та їх вклад в наукуВчені біологи України та їх вклад в науку
Вчені біологи України та їх вклад в науку
 
Завдання II етапу Всеукраїнської олімпіади з історії
Завдання II етапу Всеукраїнської олімпіади з історіїЗавдання II етапу Всеукраїнської олімпіади з історії
Завдання II етапу Всеукраїнської олімпіади з історії
 
сзш № 12 атестація 2013 ....
сзш № 12 атестація 2013 ....сзш № 12 атестація 2013 ....
сзш № 12 атестація 2013 ....
 
презентація на урок
презентація на урокпрезентація на урок
презентація на урок
 
фінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptxфінансові розрахунки 10 клас.pptx
фінансові розрахунки 10 клас.pptx
 
Розвиток творчих компетентностей і креативного мислення на уроках інформатики
Розвиток творчих компетентностей і креативного мислення на уроках інформатикиРозвиток творчих компетентностей і креативного мислення на уроках інформатики
Розвиток творчих компетентностей і креативного мислення на уроках інформатики
 
портфоліо вчителя анг мови кзш №14 долід н.і. (2)
портфоліо вчителя анг мови кзш №14 долід н.і. (2)портфоліо вчителя анг мови кзш №14 долід н.і. (2)
портфоліо вчителя анг мови кзш №14 долід н.і. (2)
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування Lazarus
 

Similar to JavaScript. Lectures. part 1. basis

Coding for Future in Lutsk. JavaScript. Part 2
Coding for Future in Lutsk. JavaScript. Part 2Coding for Future in Lutsk. JavaScript. Part 2
Coding for Future in Lutsk. JavaScript. Part 2
Олег Вілігурський
 
вступ до Java script
вступ до Java scriptвступ до Java script
вступ до Java scriptAnia Paliukh
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
rznz
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascalAnn Eres
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovu
Escuela
 
Coding for Future in Lutsk. JavaScript. Part 3
Coding for Future in Lutsk. JavaScript. Part 3Coding for Future in Lutsk. JavaScript. Part 3
Coding for Future in Lutsk. JavaScript. Part 3
Олег Вілігурський
 
01 Incapsulation
01 Incapsulation01 Incapsulation
01 Incapsulationolegapster
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
Elantix
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal1cana1
 
Паскаль
ПаскальПаскаль
Паскаль
Irina Tabanets
 
Tdd, ти де?
Tdd, ти де?Tdd, ти де?
Tdd, ти де?
Roman Mazur
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
OdessaJS Conf
 
Phpunit модульне тестування
Phpunit модульне тестуванняPhpunit модульне тестування
Phpunit модульне тестування
Vladimir Maslechkin
 
програмування на мові паскаль
програмування на мові паскаль програмування на мові паскаль
програмування на мові паскаль Helen Pata
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови Ci
Escuela
 
Переповнення буферу у стеку
Переповнення буферу у стекуПереповнення буферу у стеку
Переповнення буферу у стеку
Oleg Nazarevych
 

Similar to JavaScript. Lectures. part 1. basis (20)

Coding for Future in Lutsk. JavaScript. Part 2
Coding for Future in Lutsk. JavaScript. Part 2Coding for Future in Lutsk. JavaScript. Part 2
Coding for Future in Lutsk. JavaScript. Part 2
 
вступ до Java script
вступ до Java scriptвступ до Java script
вступ до Java script
 
cpp-2013 #20 Best practices
cpp-2013 #20 Best practicescpp-2013 #20 Best practices
cpp-2013 #20 Best practices
 
Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1Основи програмування .Паскаль ч.1
Основи програмування .Паскаль ч.1
 
Pascal основи програмування частина 1
Pascal основи програмування частина 1Pascal основи програмування частина 1
Pascal основи програмування частина 1
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
3018 1
3018 13018 1
3018 1
 
Pascal osnovu
Pascal osnovuPascal osnovu
Pascal osnovu
 
Coding for Future in Lutsk. JavaScript. Part 3
Coding for Future in Lutsk. JavaScript. Part 3Coding for Future in Lutsk. JavaScript. Part 3
Coding for Future in Lutsk. JavaScript. Part 3
 
01 Incapsulation
01 Incapsulation01 Incapsulation
01 Incapsulation
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
 
Programuvanna na movi_pascal
Programuvanna na movi_pascalProgramuvanna na movi_pascal
Programuvanna na movi_pascal
 
Паскаль
ПаскальПаскаль
Паскаль
 
Tdd, ти де?
Tdd, ти де?Tdd, ти де?
Tdd, ти де?
 
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
"Is there life in react without redux" by Babich Sergiy. OdessaJS'2021
 
Theme24-jQuery
Theme24-jQueryTheme24-jQuery
Theme24-jQuery
 
Phpunit модульне тестування
Phpunit модульне тестуванняPhpunit модульне тестування
Phpunit модульне тестування
 
програмування на мові паскаль
програмування на мові паскаль програмування на мові паскаль
програмування на мові паскаль
 
Основи мови Ci
Основи мови CiОснови мови Ci
Основи мови Ci
 
Переповнення буферу у стеку
Переповнення буферу у стекуПереповнення буферу у стеку
Переповнення буферу у стеку
 

More from Олег Вілігурський

Python для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботиPython для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботи
Олег Вілігурський
 
Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.
Олег Вілігурський
 
Python for physicists. introduction
Python for physicists. introductionPython for physicists. introduction
Python for physicists. introduction
Олег Вілігурський
 
Theme23-oop2(end)
Theme23-oop2(end)Theme23-oop2(end)
Theme23-oop2
Theme23-oop2Theme23-oop2
Theme22-OOP
Theme22-OOPTheme22-OOP
Theme20_ajax
Theme20_ajaxTheme20_ajax
Theme19_css
Theme19_cssTheme19_css
Theme18_css
Theme18_cssTheme18_css
Theme17a css
Theme17a cssTheme17a css
Theme17
Theme17Theme17
Theme16
Theme16Theme16
Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 13
 Coding for Future in Lutsk. JavaScript. Part 13 Coding for Future in Lutsk. JavaScript. Part 13
Coding for Future in Lutsk. JavaScript. Part 13
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11
Олег Вілігурський
 
Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10
Олег Вілігурський
 

More from Олег Вілігурський (20)

Python для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботиPython для фізиків. Вступ. Лабораторні роботи
Python для фізиків. Вступ. Лабораторні роботи
 
Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.Python для фізиків. Вступ. Лабораторні роботи.
Python для фізиків. Вступ. Лабораторні роботи.
 
Python for physicists. introduction
Python for physicists. introductionPython for physicists. introduction
Python for physicists. introduction
 
Theme25-jQuery2
Theme25-jQuery2Theme25-jQuery2
Theme25-jQuery2
 
Theme23-oop2(end)
Theme23-oop2(end)Theme23-oop2(end)
Theme23-oop2(end)
 
Theme23-oop2
Theme23-oop2Theme23-oop2
Theme23-oop2
 
Theme22-OOP
Theme22-OOPTheme22-OOP
Theme22-OOP
 
Theme21_json
Theme21_jsonTheme21_json
Theme21_json
 
Theme20_ajax
Theme20_ajaxTheme20_ajax
Theme20_ajax
 
Theme19_css
Theme19_cssTheme19_css
Theme19_css
 
Theme18_css
Theme18_cssTheme18_css
Theme18_css
 
Theme17a css
Theme17a cssTheme17a css
Theme17a css
 
Theme17
Theme17Theme17
Theme17
 
Theme16
Theme16Theme16
Theme16
 
Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15
 
Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14
 
Coding for Future in Lutsk. JavaScript. Part 13
 Coding for Future in Lutsk. JavaScript. Part 13 Coding for Future in Lutsk. JavaScript. Part 13
Coding for Future in Lutsk. JavaScript. Part 13
 
Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12
 
Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11
 
Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10
 

Recently uploaded

POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
Olga Kudriavtseva
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
Olga Kudriavtseva
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
estet13
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
ssuser7541ef1
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
olaola5673
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
olaola5673
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
Репетитор Історія України
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
Olga Kudriavtseva
 

Recently uploaded (10)

POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdfГлавлит_2_0_Книжкова_цензура_в_Росії.pdf
Главлит_2_0_Книжкова_цензура_в_Росії.pdf
 
Основи_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdfОснови_історичної_просвіти_—_для_перекладу.pdf
Основи_історичної_просвіти_—_для_перекладу.pdf
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 

JavaScript. Lectures. part 1. basis

  • 1. Вступ до JavaScript Міністерство освіти і науки України Волинський національний університет імені Лесі Українки Кафедра теоретичної та комп’ютерної фізики імені А. В. Свідзинського Олег Вілігурський старший викладач кафедри теоретичної та комп’ютерної фізики імені А. В. Свідзинського Луцьк - 2021
  • 2. • Що таке JavaScript? • Що вміє JavaScript? • Що НЕ вміє JavaScript?
  • 3. Основні переваги JavaScript • Повна інтеграція з HTML/CSS. • Прості задачі виконуються просто. • Підтримується усіма поширеними браузерами і по замовчуванню ввімкнений.
  • 5. Довідники і специфікації • Mozilla Developer Network (MDN) – частково українізований • MSDN – частково українізований • htmlbook.ru – довідник по HTML і CSS • www.w3schools.com/js/ • learn.javascript.ru/ - підручник
  • 6. Редактори для коду Вимоги до редакторів: – Підсвітка синтаксису. – Автодоповнення. – «Фолдинг» (folding) – можливість сховати- розкрити блок коду. IDE: WebStorm, PHPStorm, Aptana Легкі редактори: Sublime Text (shareware), Notepad ++, SciTe, Atom
  • 7. Консоль розробника • Виклик – клавіша F12 • Запуск сценаріїв: – Ctrl+Enter (Firefox) – Enter (Chrome), Shift+Enter для переходу на новий рядок
  • 8. Основи мови JavaScript Тег SCRIPT <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <p>Початок документа</p> <script> alert("Привіт, Світе!"); </script> <p>Кінець документа</p> </body> </html>
  • 9. Задача 1 Створіть код сторінки, яка виводить повідомленя “Я вивчаю JavaScript!”, збережіть її на диску, відкрийте у браузері.
  • 10. Розв’язок <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Задача 1</title> </head> <body> <script> alert( 'Я вивчаю JavaScript!' ); </script> </body> </html>
  • 11. Додаткові завдання: • Створіть додаткову команду alert у цьому самому скрипті • Створіть нову команду alert в окремому тезі <script>
  • 12. Зовнішні скрипти, порядок виконання <script src="script.js"></script> <script src="/path/to/script.js"></script> <script src="https://www.facebook.com/rsrc.php/v3/y7/r /XWlsagvmeBU.js"></script> Домашнє завдання Прочитати про абсолютні і відносні шляхи у HTML
  • 13. <script src="file.js"> alert( 1 ); // ігнорується! </script> <script src="file.js"></script> <script> alert( 1 ); </script> Альтернатива:
  • 14. Асинхронні скрипти: defer/async • атрибути async і defer використовуються для того, щоб поки вантажиться зовнішній скрипт – браузер показав подальшу частину сторінки (за скриптом). • defer зберігає відносну послідовність скриптів. Крім того, defer чекає завантаження всієї сторінки. • async не зберігає послідовність скриптів. Який скрипт завантажить першим, той і спрацює.
  • 15. Задача 2 Виведіть alert зовнішнім скриптом Файл alert.js розмістити в тій самій директорії
  • 16. Розв’язок Код для HTML-файлу: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Задача 2</title> </head> <body> <script src="alert.js"></script> </body> </html> Для файла alert.js: alert( 'Я вивчаю JavaScript!' );
  • 17. Задача 3 Яка послідовність виконання скриптів? <script src="big.js"></script> <script src="small.js"></script> <script async src="big.js"></script> <script async src="small.js"></script> <script defer src="big.js"></script> <script defer src="small.js"></script>
  • 18. Розв’язки • big.js, small.js. • small.js, big.js (якщо big.js довше завантажується). • big.js, small.js.
  • 19. Дещо про структуру коду alert('Один'); alert('Два'); alert('Один') alert('Два') // поганий стиль alert('Один'); alert('Два'); // гарний стиль
  • 20. Коментарі alert( 'Один' ); // коментар alert( 'Два' ); // коментар /* багаторядковий коментар. alert( 'Три' ); // не виконується */ /* /* Так не можна!!! (вкладений коментар) */ */ alert( 'Чотири' ); Гарячі клавіші Ctrl+/ і Ctrl+Shift+/
  • 21. Сучасний стандарт, "use strict" Вмикається на початку коду директивою "use strict"; або ’use strict’; Скасувати не можна!
  • 22. Змінні var book; book = 'Кобзар'; Або так: var book = 'Кобзар'; Кілька змінних: var user = 'John', age = 25, message = 'Hi!'; В іменах змінних допускаються букви, цифри і символи _, $. Перший символ не може бути цифрою. Кирилиця не вітається! var, class, return, export… – зарезервовані імена! З незначними відмінностями працює оголошення змінних через ключове слово let: let gender = 'male';
  • 23. Приклади використання var message; message = 'Hello!'; message = 'World!'; // поміняли значення alert( message ); var hello = 'Hello world!'; var message; message = hello; // скопіювали значення alert( hello ); // Hello world! alert( message ); // Hello world!
  • 24. Константи var PHONE = '+38 050 123 45 67'; var EARTH_RADIUS = 6371; Або const PHONE = '+38 050 123 45 67'; const EARTH_RADIUS = 6371;
  • 25. Задача 4 1. Оголосіть змінні admin і name. 2. Запишіть в name значення "Вася". 3. Скопіюйте значення з name в admin . 4. Виведіть admin і name .
  • 26. Правильний вибір імені змінної • Ніякого трансліту, тільки англійська • Не боятись довгих імен • “Верблюжий стиль” (“camelCase”) • Ім’я повинно відповідати даним
  • 27. Задача 5 • Створіть ім’я для назви першої страви в ресторані, назва страви - “Борщ". Правильне ім’я оберіть самі. • Створіть змінну для імені користувача зі значенням “Вася". Ім’я теж на ваш смак.
  • 28. Розв’язок • var firstDishName = "Борщ"; • var userName = "Вася";
  • 29. Виведення даних JavaScript може видавати дані різними способами: •“Вписування” у HTML елемент: innerHTML. •Виведення у HTML-потік: document.write(). •Виведення у alert-вікно: window.alert() або alert(). •Виведення у консоль браузера: console.log().
  • 30. innerHTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>innerHTML</title> </head> <body> <h2 id="pageHeader">Заголовок</h2> <p id="par1">Перший абзац</p> <p id="par2">Другий абзац</p> <script> alert( "Пауза" ); document.getElementById("par1").innerHTML = "Зовсім інший текст"; </script> </body> </html>
  • 32. document.write() <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <h2 id="pageHeader">Заголовок</h2> <p id="par1">Перший абзац</p> <p id="par2">Другий абзац</p> <script> alert( "Пауза" ); document.write("Текст через document.write()"); </script> </body></html>
  • 33. !!! Використання document.write() після повного завантаження HTML, замінить весь існуючий HTML. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>innerHTML</title> </head> <body> <h2 id="pageHeader">Заголовок</h2> <p id="part1">Перший абзац</p> <button type="button" onclick="document.write('Якийсь новий текст')">Кнопка з текстом</button> </body> </html>
  • 34. alert() <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <h2 id="pageHeader">Заголовок</h2> <p id="par1">Перший абзац</p> <p id="par2">Другий абзац</p> <script> alert( 2 + 2 ); </script> <p>Третій абзац</p> </body> </html> Повна форма: window.alert()
  • 35. console.log() <!DOCTYPE html> <html> <body> <script> console.log(2 + 2); console.log("Повідомлення"); </script> </body> </html>
  • 36. Загальна інформація про типи даних. typeof • Число «number» – Всі числа + Infinity + NaN • Рядок «string» let str = "Дядя Вася"; str = 'племінник Коля'; • Булевий (логічний) тип «boolean» true, false • Спеціальне значення «null» • Спеціальне значення «undefined» • Об’єкти «object» let user = { name: "Вася" };
  • 37. Оператор typeof повертає тип об’єкта: typeof x або typeof (x)
  • 38. Основні оператори • Унарні і бінарні оператори • Унарні мають один аргумент (операнд), бінарні – два. • Той самий оператор може бути і унарним і бінарним: x = -x; z = z - x;
  • 39. Додавання чисел і рядків, перетворення типів var x = 1, y = 2; alert( x + y); // 3 var a = "сірий" + "вовк"; alert( a ); // сірийвовк !Без пробіла! alert( '1' + 2 ); // "12" alert( 2 + '1' ); // "21"
  • 40. + може перетворювати число в рядок, інші арифметичні оператори – тільки рядки в числа alert( 2 - '1' ); // 1 alert( 6 / '2' ); // 3 var one = "1"; var two = "2"; alert( one + two ); // "12", додаються рядки alert( +one + +two ); // 3
  • 41. Пріоритет операторів 16 Unary Plus + … Unary Negation - … Prefix Increment ++ … Prefix Decrement -- … typeof typeof … 15 Exponentiation … ** … 14 Multiplication … * … Division … / … Remainder … % … 13 Addition … + … Subtraction … - … 3 Assignment … = … … += … … -= … … **= … … *= … … /= … https://developer.mozilla.org/uk/docs/Web/JavaScript/Refere nce/Operators/Operator_Precedence
  • 42. Інкремент/декремент: ++, -- var i = 1; var a = ++i; alert(a); // 2 var i = 1; var a = i++; alert(a); // 1
  • 43. Скорочена арифметика var n = 2; n = n + 5; // n = 7 n = n * 2; // n = 14 var n = 2; n += 5; n *= 2; alert( n ); // 14
  • 44. Задача 6 Розберіть наступний код: var a = b = 1, c, d; c = ++a; alert(c); d = b++; alert(d); c = (2+ ++a); alert(c); d = (2+ b++); alert(d);
  • 45. Задача 7 Якого значення набудуть a і x? var a = 2; var x = 1 + (a *= 2);
  • 46. Оператори порівняння >, < >=, <= == != Логічні значення true false
  • 47. Приклад var a = true; var b = 3 > 4; // b = false alert( b ); // false alert( a != b ); // (true != false) правильно, виведе true
  • 48. Порівняння рядків Порівнюються посимвольно. При цьому: 'A' < 'B'<...<'a'<...<'а'<'б' Приклади: alert( 'кілограм' > 'грам' ); // true alert( 'метр' > 'сантиметр' ); // false alert( 'кілометр' > 'кілограм' ); // true alert( 'граматика' > 'грам' ); // true, бо 'а' > ніж «нічого»
  • 49. Задача 8 Яким буде результат? alert( "2" > "14" ); alert( +"2" > +"14" );
  • 50. Взаємодія з користувачем: alert, prompt, confirm alert(повідомлення); alert( "Привіт" + User ); result = prompt(title, default); var years = prompt('Ваш вік?', 20); alert('Вам ' + years + ' років'); При натисканні “Esc” повертає null. result = confirm(question); var isHungry = confirm("Хочете їсти?");
  • 51. Задача 9 Створіть сторінку, яка запитує у користувача його ім’я і вітається з ним.
  • 52. Умовні оператори: if, '?' if (умова) команда або if (умова) { команди } Умова – логічне значення або приводиться до логічного значення. 0, "", null, undefined, NaN – false Все інше - true
  • 53. if - else var year = prompt('Який зараз рік?', ''); if (year == 2020) { alert( 'Правильно!' ); } else { alert( 'Неправильно!' ); }
  • 54. else if var userMass = prompt('Ваша маса?', ''); if (userMass < 50) { alert( 'Сходіть-но поїсти' ); } else if (userMass > 120) { alert( 'Сідайте на дієту' ); } else { alert( 'Ну й нормально' ); }
  • 55. Задача 10 Чи виведеться alert? if ("0") { alert( 'Привіт' ); }
  • 56. Тернарний оператор ? : умова ? значення1 : значення2 access = (age > 14) ? true : false; те саме, що if (age > 14) { access = true; } else { access = false; }
  • 57. Задача 11 За допомогою конструкції if..else напишіть код, який отримує значення prompt, а потім виводить alert: •1, якщо значення >0, •-1, якщо <0, •0, якщо значення =0.
  • 58. Розв’язок var value = prompt('Введіть число', 0); if (value > 0) { alert( 1 ); } else if (value < 0) { alert( -1 ); } else { alert( 0 ); }
  • 59. Задача 12 (домашнє завдання) Напишіть код, який буде питати логін (prompt). Якщо відвідувач вводить “Admin”, то питається пароль, якщо натиснув “Відміна” (escape) – виводить “Вхід скасовано”, якщо вводить щось інше – “Я вас не знаю”. Пароль перевіряти так. Якщо введено пароль “javascript”, то виводить “Ласкаво просимо!”, інакше – “Пароль неправильний”, при відміні – “Вхід скасовано”. Вказівка: по натисканню Esc prompt повертає null. Виняток – Safari, який повертає порожній рядок.
  • 62. Задача 13 Перепишіть if з використанням конструкції '? :' if (a + b < 4) { result = 'Мало'; } else { result = 'Багато'; }
  • 63. Розв’язок result = (a + b < 4) ? 'Мало' : 'Багато';
  • 64. Задача 14 Перепишіть if…else в '? :' var gender, message; if (gender == 'male') { message = 'Привіт, пане'; } else if (gender == 'female') { message = 'Привіт, пані'; } else if (gender == '') { message = 'Привіт'; } else { message = ''; }
  • 65. Розв’язок var gender, message; gender = prompt("Ваша стать?", ''); message = (gender == 'male') ? 'Привіт, пане' : (gender == 'female') ? 'Привіт, пані' : (gender == '') ? 'Привіт' : ''; alert(message);
  • 66. Логічні оператори Логічні ||(АБО), &&(І), !(Не). alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false alert( true && true ); // true alert( false && true ); // false alert( true && false ); // false alert( false && false ); // false Пріоритет у && більший, ніж у ||: alert( true || true && false ); // true
  • 67. Логічне НЕ: var result = !value; Спочатку аргумент зводиться до логічного типу true/false, а потім повертається протилежне значення. Приклади: alert( !true ); // false alert( !0 ); // true Подвійне логічне НЕ можна використовувати для перетворення у логічний тип: alert( !!"рядок" ); // true alert( !!null ); // false
  • 68. Задача 15 Напишіть умову if для перевірки того, що змінна age знаходиться між 14 і 90 включно.
  • 69. Розв’язок if (age >= 14 && age <= 90)
  • 70. Задача 16 Напишіть умову if для перевірки того, що age НЕ знаходиться між 14 і 90 включно. Зробіть два варіанти умови: з використанням оператора НЕ ! і без цього оператора.
  • 71. Розв’язок Перший варіант: if (!(age >= 14 && age <= 90)) Другий варіант: if (age < 14 || age > 90)
  • 72. Перетворення типів У JavaScript є три перетворення: Рядкове: String(value) – в рядковому контексті або при додаванні з рядком. alert( true + "test" ); // "truetest" alert( String(null) ); // "null" Числове: Number(value) – в числовому контексті, включаючи унарний плюс +value. var a = +"123"; // 123 var a = Number("123"); // 123 Логічне: Boolean(value) – в логічному контексті, можна також виконати подвійним НЕ: !!value. alert( 2 == "два" ); // false alert( Boolean("no") ); // true
  • 73. Порівняйте такі фрагменти: var p = prompt("?", ''); alert (Boolean(Number(p))); var p = prompt("?", ''); alert (Boolean(p)); Що буде якщо вводити 0 і якщо натискати кнопку “Скасувати”?
  • 74. Цикли Цикл while while (умова) { // код, тіло цикла } Приклад: var i = 0; while (i < 5) { alert( i ); i++; }
  • 75. Цикл do…while do { // тіло цикла } while (умова) Приклад: var i = 0; do { alert( i ); i++; } while (i < 3);
  • 76. Цикл for for (початок; умова; крок) { // ... тіло цикла ... } Приклад: var i; for (i = 0; i < 5; i++) { alert( i ); } Або for (var i = 0; i < 5; i++) { alert(i); // 0, 1, 2, 3, 4 }
  • 77. Переривання циклу Директива break. Сумація чисел, поки користувач їх вводить var sum = 0; while (true) { var value = +prompt("Введіть число", ''); if (!value) break; // (*) sum += value; } alert( 'Сума: ' + sum );
  • 78. Факультативний матеріал •continue – переривання поточної ітерації •мітки для break/continue Цикл for..in для перахунку властивостей об’єкта – пізніше.
  • 79. Задача 17 Яке останнє значення виведе цей код і чому? var i = 3; while (i) { alert( i-- ); }
  • 80. Розв’язок 1. Треба врахувати, що alert(i--) спочатку виводить поточне значення i, а потім зменшує його на 1.
  • 81. Задача 18 Які значення виведуть цикли: for (var i = 0; i < 5; i++) alert( i ); for (var i = 0; i < 5; ++i) alert( i );
  • 82. Розв’язок В обох випадках – від 0 до 4. Алгоритм роботи for: 1. Призначити i=0 2. Перевірити i<5 3. Якщо правильно – виконати тіло цикла alert(i), потім виконати i++
  • 83. Задача 19 Виведіть всі парні числа від 2 до 10.
  • 84. Розв’язки for (var i=2; i<=10; i += 2) { alert( i ); } Або for (var i = 2; i <= 10; i++) { if (i % 2 == 0) { alert( i ); } } Або var i = 2; while (i<=10) { alert ( i ); i += 2; }
  • 85. Задача 20 Напишіть цикл, який за допомогою prompt пропонує ввести число, > 100. Якщо користувач ввів інше число – попросити ввести ще раз, і так далі. Вихід з циклу – введення числа > 100 або кнопка “Скасувати”. Припускається, що користувач вводить тільки числа.
  • 86. Розв’язки var num =1; while (num <100 && !!num ==true){ num = prompt ("Введіть число > 100", ''); } Або var num; do { num = prompt("Введіть число > 100", 0); } while (num <= 100 && num != null);
  • 87. Конструкція switch Синтаксис: switch(x) { case 'value1': // if (x === 'value1') ... [break] case 'value2': // if (x === 'value2') ... [break] default: ... [break] }
  • 88. Приклад: var a = 'весна'; switch (a) { case 'зима': alert( 'холодно' ); break; case 'весна': alert( 'тепло' ); break; case 'літо': alert( 'спекотно' ); break; default: alert( 'мокро' ); }
  • 89. Якщо break нема, то виконання піде нижче по наступних case, при цьому інші перевірки ігноруються. var a = 'весна'; switch (a) { case 'зима': alert( 'холодно' ); case 'весна': alert( 'тепло' ); case 'літо': alert( 'спекотно' ); default: alert( 'мокро' ); } Виведе по черзі тепло, спекотно, мокро.
  • 90. Групування case Кілька значень case можна згрупувати. switch (new Date().getDay()) { case 4: case 5: text = "Скоро вихідні"; break; case 0: case 6: text = "Сьогодні вихідний"; break; default: text = "Вихідні колись будуть…"; } alert(text); Фрагмент new Date().getDay() розглянемо пізніше. Він виводить номер дня тижня, причому неділя – 0, понеділок – 1…
  • 91. Задача 21 Перепишіть код з if у switch. var a = +prompt('a?', ''); if (a == 0) { alert( 0 ); } if (a == 1) { alert( 1 ); } if (a == 2 || a == 3) { alert( '2,3' ); }
  • 92. Розв’язок var a = +prompt('a?', ''); switch (a) { case 0: alert( 0 ); break; case 1: alert( 1 ); break; case 2: case 3: alert( '2,3' ); break; }
  • 93. Функції Синтаксис: function name(parameter1, parameter2, parameter3) { код, який має виконуватись } Приклад: function sayHello() { alert( 'Привіт!' ); } sayHello(); sayHello();
  • 94. Локальні змінні Функції можуть містити локальні змінні, які будуть видимі тільки всередині функції. Оголошуються через var. function showMessage() { var message = 'текст у локальній змінній'; alert( message ); } showMessage(); // тут все спрацює alert( message ); // <-- буде помилка
  • 95. Блоки if/else, switch, for, while, do..while не обмежують область видимості змінних. function count() { for (var i = 0; i < 3; i++) { var j = i * 2; } alert( i ); // i=3, останнє значення i, при якому цикл перестав працювати alert( j ); // j=4, останнє значення j, яке обчислив цикл } count(); Чи можна поза функцією написати alert( i )?
  • 96. Зовнішні і глобальні змінні Функція може працювати зі змінними, оголошеними зовні: var day = 'понеділок'; function showDay() { alert( day ); // виведення зовнішньої змінної day = 'вівторок'; // (1) зміна значення зовнішньої змінної var message = 'Сьогодні ' + day; alert( message ); } alert( day ); // понеділок showDay(); alert( day ); // вівторок, бо функція змінила значення змінної Змінна, оголошена на рівні всього скрипта називається
  • 97. Параметри функції Функції можна передавати параметри (аргументи), з якими вона працюватиме. function rectangle(a,b) { var S = a*b; var P = 2*(a+b); alert ("Площа прямокутника = " + S); alert ("Периметр прямокутника = " + P); } rectangle(2,3);
  • 98. Аргументи по замовчуванню У функції може бути будь-яка кількість аргументів. Якщо якийсь аргумент при виклику функції не заданий, він буде рівним undefined. Приклад: function rectangle(a,b) { alert ( "a = " + a + ", b = " + b ); var S = a*b; var P = 2*(a+b); alert ("Площа прямокутника = " + S); alert ("Периметр прямокутника = " + P); } rectangle(2); Виведе спочатку “a = 2, b = undefined”, а потім “Площа прямокутника = NaN”, “Периметр прямокутника = NaN”.
  • 99. Завжди можна за своїм бажання задати значення аргументів по замовчуванню. Наприклад: function rectangle(a,b) { alert ( "a = " + a + ", b = " + b ); if (b === undefined) { b = a; alert( "Будемо вважати, що маємо справу з квадратом" ); } var S = a*b; var P = 2*(a+b); alert ("Площа прямокутника = " + S); alert ("Периметр прямокутника = " + P); } rectangle(2); Альтернативний спосіб (замість блоку if): b = b || a; “Зайві” аргументи ігноруються. rectangle(2, 3, 4, "ще щось"); // все добре працює
  • 100. Повернення значення. return function getArea(a,b) { return a*b; } function getPerimeter(a,b) { return 2*(a+b); } var S = getArea(2,3); alert( "S = " + S ); alert( "P = " + getPerimeter(2,3) );
  • 101. Директив return може бути кілька function showSign(number) { if (number > 0) { return "Плюс"; } else if (number < 0) { return "Мінус"; } else { return; } } alert( showSign(1) ); // Плюс alert( showSign(-1) ); // Мінус alert( showSign(0) ); // undefined
  • 102. Задача 22 Напишіть функцію, яка виводить текст “Я вивчаю JavaScript” і викличте її. Задача 23 Напишіть функцію, яка виводить текст “Я вивчаю parameter”, де parameter має вводитись як аргумент. Викличте її з аргументом JavaScript.
  • 103. Задача 24 Напишіть функцію min(a,b), яка повертає менше з чисел a,b. Приклад роботи: min(2, 5) == 2 min(3, -1) == -1 min(1, 1) == 1
  • 104. Задача 25 Напишіть функцію pow(x,n), яка повертає x в степені n, тобто перемножує x на себе n разів і повертає результат. Вважається, що x і n – цілі додатні числа. Створіть сторінку, яка питає x і n, а потім виводить результат pow(x,n).
  • 105. Розв’язок function pow(x, n) { var result = x; for (var i = 1; i < n; i++) { result *= x; } return result; } var x = prompt("x?", ''); var n = prompt("n?", ''); if (n <= 1) { alert( 'Степінь ' + n + ' не підтримується, введіть ціле n > 1' ); } else { alert( pow(x, n) ); }
  • 106. Функціональні вирази. Function Expression Синтаксис: var f = function(параметри) { // тіло функції }; Основна відмінність: функції, оголошені як Function Declaration, створюються інтерпретатором до виконання коду. myFunction(); // 1 function myFunction() { alert( 1 ); }
  • 107. Функціональні вирази дозволяють застосувати умовне оголошення функції, наприклад: var age = prompt('Ваш вік?'); var sayHi; if (age >= 18) { sayHi = function() { alert( 'Заходьте' ); } } else { sayHi = function() { alert( 'До 18 не можна' ); } } sayHi();
  • 108. Рекурсія В тілі функції можна викликати інші функції, зокрема, саму себе. function power(base, exponent) { if (exponent == 0) return 1; else return base * power(base, exponent - 1); } alert(power(2, 3));
  • 109. Задача 26 Напишіть функцію sumTo(n), яка для даного n рахує суму чисел від 1 до n. Задачу можна розв'язати трьома способами: 1. Через цикл. 2. Через рекурсію. 3. Через формулу суми арифметичної прогресії.
  • 110. Розв'язки 1. function sumTo(n) { var sum = 0; for (var i = 1; i <= n; i++) { sum += i; } return sum; }
  • 111. 2. function sumTo(n) { if (n == 1) return 1; return n + sumTo(n - 1); } alert( sumTo(100) ); 3. function sumTo(n) { return n * (n + 1) / 2; }
  • 112. Задача 27 Напишіть функцію для обчислення факторіала числа. n! = n*(n-1)*(n-2)*...*2*1.
  • 113. Розв'язок function factorial(n) { return (n != 1) ? n * factorial(n - 1) : 1; } alert( factorial(5) ); // 120
  • 114. Задача 28 Послідовність чисел Фібоначчі визначається формулою Fn = Fn-1 + Fn-2. Тобто наступне число є сумою двох попередніх. Перші два числа рівні 1, далі 2 (1+1), 3(1+2), 5(2+3) і так далі: 1, 1, 2, 3, 5, 8, 13, 21.... Напишіть функцію fib(n), яка повертає n-е число Фібоначчі. Приклад роботи: function fib(n) { /* ваш код */ } alert( fib(3) ); // 2 alert( fib(7) ); // 13 alert( fib(77)); // 5527939700884757
  • 115. Розв'язок Пряма рекурсія: function fib(n) { return n <= 1 ? n : fib(n - 1) + fib(n - 2); } alert( fib(3) ); // 2 alert( fib(7) ); // 13 // fib(77); // краще не запускати. “Підвісить” браузер
  • 116. Обчислення в циклі: function fib(n) { var a = 1, b = 1; for (var i = 3; i <= n; i++) { var c = a + b; a = b; b = c; } return b; } alert( fib(3) ); // 2 alert( fib(7) ); // 13 alert( fib(77) ); // 5527939700884757
  • 117. Методи і властивості Всі значення у JavaScript, крім null і undefined, містять набір допоміжних функцій і значень, які називаються методами і властивостями відповідно. Вони викликаються через крапку.
  • 118. Методи і властивості рядкових величин Властивість str.length alert( "Якийсь текст".length ); // 12 var str = "Якийсь текст"; alert( str.length ); // 12 Методи викликаються з додаванням (). Метод str.toUpperCase() var txt = "Якийсь текст"; alert( txt.toUpperCase() ); // ЯКИЙСЬ ТЕКСТ Аналогічно - toLowerCase()
  • 119. Деякі спеціальні символи n New line r Carriage return t Tab Приклад: alert( 'ОдинnДва' ); Екранування спеціальних символів ' ' " "
  • 120. Властивість length var str = "Myn"; alert( str.length ); // 3 Метод charAt() var str = 'Реве та стогне Дніпр широкий'; alert( str.charAt(0) ); // Р Альтернативний спосіб: alert( str[0] ); // Р
  • 121. Пошук підрядка indexOf(підрядок[, стартова_позиція]). Приклад: var someText = "Думи мої, думи мої,nЛихо мені з вами!"; alert( someText.indexOf("Думи") ); // 0 alert( someText.indexOf("думи") ); // 10 alert( someText.indexOf("лихо") ); // -1
  • 122. Виділення підрядка substring(start [, end]) не включаючи end! Приклад: var str = "Hello world!"; var res = str.substring(0, 4); alert( res ); // Hell alert( str.substring(6) ); // world!
  • 123. substr(start [, length]) Приклад: var str = "Hello world!"; var res = str.substr(1, 4); // ello alert( str.substr(6) ); // world! slice(start [, end]) не влючаючи end! Приклад: var str = "Hello world!"; var res = str.slice(1, 4); alert( res ); // ell alert( str.slice(6) ); // world!
  • 124. У методі substring від’ємні аргументи заміняються на 0, а завеликі обрізаються до довжини рядка. Якщо start > end, то аргументи міняються місцями. У методі slice від’ємні аргументи відраховуються від кінця рядка. alert( "JavaScript".substring(4, -1) ); // Java alert( "JavaScript".slice(4, -1) ); // Scrip
  • 125. Метод replace str.replace(підрядок, новий_підрядок) Заміняється тільки перше входження! Приклад: var str = "У лісі, лісі темному"; var str2 = str.replace("лісі","парку"); alert( str2 ); // = "У парку, лісі темному" alert( str ); // "У лісі, лісі темному";
  • 126. Задача 29 Напишіть функцію ucFirst(str), яка повертає рядок str з великою першою буквою, наприклад: ucFirst("вася") == "Вася"; ucFirst("") == ""; // нема помилки при порожньому рядку
  • 127. Розв’язок function ucFirst(str) { if (!str) return str; // спрацює тільки для порожнього рядка return str[0].toUpperCase() + str.slice(1); } alert( ucFirst("вася") );
  • 128. Задача 30 Напишіть функцію checkSpam(str), яка повертає true, якщо рядок str містить "porn" або "xxx", а інакше false. Функція повинна бути нечутливою до регістру.
  • 129. Розв’язок function checkSpam(str) { var lowerStr = str.toLowerCase(); return !!((lowerStr.indexOf('porn')+1) || (lowerStr.indexOf('xxx')+1)); } alert( checkSpam('best pOrN movies') ); alert( checkSpam('free xxxxx') ); alert( checkSpam("Голосуйте за Івана!") );
  • 130. Задача 31 Напишіть функцію countSubstr(str), яка рахуватиме всі входження підрядка у рядок. Наприклад: alert( countSubstr("Думи мої, думи мої/nЛихо мені з вами!", "Думи") ); // 2
  • 131. Розв’язок 1 var txt = "Думи мої, думи мої/nЛихо мені з вами!"; var substr = "Думи"; function countSubstr(str, substr) { var counter = 0; var lowerStr = str.toLowerCase(); var lowerSubstr = substr.toLowerCase(); while (lowerStr.indexOf(lowerSubstr)!=-1) { lowerStr = lowerStr.slice(lowerStr.indexOf(lowerSubstr)+1); counter++; } return counter; } alert( countSubstr(txt, substr) ); Скажіть, що буде виводитись такими командами: alert(txt);
  • 132. Розв’язок 2 function countSubstr2(str, substr) { var counter = 0; var pos = 0; var lowerStr = str.toLowerCase(); var lowerSubstr = substr.toLowerCase(); while (true) { var foundPos = lowerStr.indexOf(lowerSubstr, pos); if (foundPos == -1) break; pos = foundPos + 1; counter++; } return counter;
  • 133. Задача 32 Напишіть функцію truncate(str, maxlength), яка перевіряє довжину рядка str, і якщо вона > maxlength – заміняє кінець str на "...", так щоб її довжина стала рівна maxlength. Приклад роботи: truncate("Еней був парубок моторний І хлопець хоть куди козак", 20) = "Еней був парубок ..."; truncate("Котляревський", 20) = " Котляревський";
  • 134. Розв’язок function truncate(str, maxlength) { if (str.length > maxlength) { return str.slice(0, maxlength - 3) + '...'; // довжина стане рівною maxlength } return str; } alert( truncate("Еней був парубок моторний І хлопець хоть куди козак", 20) ); alert( truncate("Котляревський", 20) );
  • 135. Методи і властивості числових величин Метод num.toFixed(n) Округлює число num до n знаків після десяткової крапки, при необхідності доповнюючи нулями до заданої довжини і повертає в рядковому вигляді. var n = 12.345; alert( n.toFixed(2) ); // "12.35" alert( n.toFixed(0) ); // "12" alert( n.toFixed(5) ); // "12.34500" alert(12.toFixed(1)); // помилка! Можна так: alert( 12..toFixed(1) ); // 12.0
  • 136. Запис числа в різних формах: alert( 0xFF ); // 255 шістнадцяткова alert( 3e5 ); // 300000 експоненціальна alert( 0b1010101 ); // 85 двійкова Перетворення в число: var s = "12.34"; alert( +s ); // 12.34 alert( +"12test" ); // NaN alert( '12.34' / "-2" ); // -6.17
  • 137. Перетворення числа в іншу систему: var n = 255; alert( n.toString(16) ); // ff alert( n.toString(2) ); // 11111111
  • 138. Математичні операції округлення Math.floor Округлює вниз Math.ceil Округлює вгору Math.round Округлює до найближчого цілого alert( Math.floor(3.1) ); // 3 alert( Math.ceil(3.1) ); // 4 alert( Math.round(3.1) ); // 3
  • 139. Задача 33 а) Округліть число до другого знаку після десяткової крапки. 3.456  3.46 б) Округліть число до сотень. 3456  3500
  • 140. Розв’язок var n1 = 3.456; alert( Math.round(n1 * 100) / 100 ); var n2 = 3456; alert( Math.round(n2 / 100) * 100 );
  • 141. Деякі математичні методи Math.sin(x) Синус Math.cos(x) Косинус Math.sqrt(x) Квадратний корінь Math.pow(x, exp) xexp Math.abs(x) Абсолютне значення Math.max(a, b, c...) Math.min(a, b, c...) Math.random() випадкове число в інтервалі [0,1)
  • 142. Задача 34 а) Напишіть код для генерації випадкового числа від min до max. б) Напишіть код для генерації випадкового цілого числа від min до max (включаючи min і max).
  • 143. Розв’язок а) var min = 5, max = 10; alert( min + Math.random() * (max - min) ); б)неправильний розв’язок: function randomInteger(min, max) { var rand = min + Math.random() * (max - min) rand = Math.round(rand); return rand; } alert( randomInteger(1, 3) ); // 2 випадає вдвічі частіше, ніж 1 і 3.
  • 144. б) один з варіантів правильного розв’язку function randomInteger(min, max) { var rand = min + Math.random() * (max + 1 - min); rand = Math.floor(rand); return rand; }
  • 145. Об’єкти У JavaScript об’єкт є набором найменованих властивостей і методів- функцій. Об’єкти можуть зберігатись у змінних, доступ до властивостей і методів – через “крапковий” синтаксис.
  • 146. Створення об’єктів Два способи: o = new Object(); o = {}; // пусті фігурні дужки Приклади: var rak = {}; var koza = { name: "Дереза", age: 12, talk: function () { alert("Заколю тебе рогами..."); } }; alert( koza.name ); // Дереза koza.talk(); // Заколю тебе рогами...
  • 147. Додавання властивості: rak.name = "Неборак"; rak.age = 60; koza.color = "white"; Видалення: delete koza.color; Перевірка наявності властивості – in: if ("name" in koza) { alert( "Властивість name існує" ); } Якщо властивості нема: alert( koza.color ); // undefined
  • 148. Інший спосіб доступу до властивостей: об’єкт['властивість']. var person = {}; person['name'] = 'Колобок'; alert( person['name'] ); // Колобок person.name = 'Солом'яний бичок'; alert( person['name'] ); // Солом'яний бичок
  • 149. Квадратні дужки дозволяють використовувати як ім’я властивості будь-який рядок: var person = {}; person['колір волосся'] = 'темний'; Допустимі обидва способи: var menuSetup = { width: 300, 'height': 200, // можна в лапках, можна без title: "Menu" }; var menuSetup = {}; menuSetup.width = 300; menuSetup.height = 200;
  • 150. Значенням може бути навіть інший об’єкт var character = { name: "Баба Яга", age: 700, transport: { name: "ступа", capacity: 1, maxSpeed: 200 } } alert( character.name ); // Баба Яга alert( character.transport.name ); // Ступа
  • 151. Задача 35 Виконайте таку послідовність дій: Створіть порожній об’єкт user. Додайте властивість name зі значенням Вася. Додайте властивість surname зі значенням Дмитрук. Поміняйте значення name на Сергій. Видаліть властивість name з об’єкта. Виведіть властивість surname.
  • 152. Перебір властивостей об‘єкта for (key in obj) { /* ... якісь дії з obj[key] ... */ } Зазвичай змінну key оголошують прямо в циклі: for (var key in menu) { // ... } Можна використовувати й інші імена для змінної: for(var propName in
  • 153. Приклад ітерації по властивостях: var character = { name: "Баба Яга", age: 700, transport: { name: "ступа", capacity: 1, maxSpeed: 200 } } for (var key in character) { alert("ключ: " + key + "nзначення: " + character[key]); }
  • 154. Задача 36 Напишіть функцію countProp для підрахунку кількості властивостей об’єкта character.
  • 155. Розв’язок function countProp (obj){ var counter = 0; for (var key in obj) { counter++; } return counter; } alert( countProp(character) ); P.S. Можливий коротший спосіб підрахунку: Object.keys(character).length (див. Масиви).
  • 156. Задача 37 Напишіть функцію isEmpty(obj), яка повертає true, якщо в об’єкті нема властивостей і false – якщо є хоч одна властивість. Приклад роботи: var schedule = {}; alert( isEmpty(schedule) ); // true schedule["8:30"] = "підйом"; alert( isEmpty(schedule) ); // false
  • 157. Розв’язок function isEmpty(obj) { for (var key in obj) { return false; } return true; }
  • 158. Задача 38 Є об’єкт salaries з зарплатами. var salaries = { "Ахванасій": 5000, "Савка": 6000, "Соломон": 2500 }; Напишіть код, який виведе суму всіх зарплат.
  • 159. Розв’язок var salaries = { "Ахванасій": 5000, "Савка": 6000, "Соломон": 2500 }; var sum = 0; for (var key in salaries) { sum += salaries[key]; } alert( sum );
  • 160. Задача 39 Є об’єкт salaries з зарплатами. Напишіть код, який виведе ім’я персонажа, у якого найбільша зарплата. Якщо об’єкт порожній, має виводитись “Ніхто нічого не заробив”.
  • 161. Розв’язок var leader = "", maxValue = 0; for (var key in salaries) { if (salaries[key] > maxValue) { maxValue = salaries[key]; leader = key; } } alert( leader || "Ніхто нічого не заробив" );
  • 162. Задача 40 Напишіть функцію multiplyNumeric, яка множить всі числові властивості на 2. Наприклад: var salaries = { // до виклику "Ахванасій": 5000, "Савка": 6000, "Митродора Пилипівна": "багато" }; multiplyNumeric(salaries); var salaries = {// після виклику "Ахванасій": 10000, "Савка": 12000, "Митродора Пилипівна": "багато" }; P. S. Для перевірки на число використовуйте функцію: function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n) }
  • 163. Розв’язок function multiply(obj) { for (var key in obj) { if( isNumeric(obj[key]) ) { obj[key] *= 2; } } } function isNumeric(n) { return !isNaN(parseFloat(n)) && isFinite(n) } multiply( salaries );
  • 164. Відмінності об’єктів від змінних У змінній, якій надається об’єкт, зберігається лише посилання на нього! var user = { name: 'Вася' }; var admin = user; admin.name = 'Люда'; alert(user.name); // 'Люда' alert(admin.name); // 'Люда' Зі звичайними змінними: var user = 'Вася'; var admin = user; admin = 'Люда'; alert( user ); // 'Вася'
  • 165. Масиви з числовими індексами Масив (Array) – різновид об’єкта, призначений для зберігання багатьох величин в одній змінній. Приклади створення: var arr = []; var fruits = ["Яблуко", "Апельсин", "Слива"];
  • 166. Доступ до елементів масиву: var fruits = ["Яблуко", "Апельсин", "Слива"]; alert( fruits[0] ); // Яблуко alert( fruits[1] ); // Апельсин alert( fruits[2] ); // Слива Заміну і додавання можна виконувати так: fruits[2] = 'Груша'; // ["Яблуко", "Апельсин", "Груша"] fruits[3] = 'Лимон'; // ["Яблуко", "Апельсин", "Груша", "Лимон"]
  • 167. Число елементів масиву виводиться властивістю length. var fruits = ["Яблуко", "Апельсин", "Слива"]; alert( fruits.length ); // 3 alert виводить всі елементи масиву через кому. Елементом масиву може бути також інший масив чи будь-який об’єкт. var harvest = ["овочі", "зернові", fruits]; alert( harvest ); // овочі,зернові,Яблуко,Апельсин,Слива
  • 168. Задача 41 З масива fruits невідомої довжини отримайте останній елемент. Поміняйте його значення на значення елемента з номером 0.
  • 169. Розв’язок alert( fruits[fruits.length - 1] ); fruits[fruits.length - 1] = fruits[0]; alert( fruits );
  • 170. Методи pop/push, shift/unshift pop – видаляє останній елемент з масиву і повертає його: var fruits = ["Яблуко", "Апельсин", "Слива"]; alert( fruits.pop() ); // видалили "Слива" alert( fruits ); // Яблуко, Апельсин push – додає елемент в кінець масиву. var fruits = ["Яблуко", "Апельсин"]; fruits.push("Груша"); alert( fruits ); // Яблуко, Апельсин, Груша
  • 171. shift – видаляє перший елемент і повертає його: var fruits = ["Яблуко", "Апельсин", "Груша"]; alert( fruits.shift() ); alert( fruits ); // Апельсин, Груша unshift – додає елемент на початок: var fruits = ["Апельсин", "Груша"]; fruits.unshift('Яблуко'); alert( fruits ); // Яблуко, Апельсин, Груша
  • 172. push і unshift можуть додавати зразу кілька елементів. shift і unshift повільніші за pop і push. Масив з “дірами”: var a = []; a[0] = 0; a[5] = 5; alert( a ); // 0,,,,,5 alert( a.length ); // 6
  • 173. Задача 42 Створіть масив cars з елементами "Volvo", "BMW". Додайте в кінець значення "Mercedes". Замініть передостаннє значення на "Toyota". Код такої операції повинен працювати з масивом будь-якої довжини. Видаліть перше значення масиву і виведіть його alert’ом. Додайте на початок значення "Nissan" і "Renault".
  • 174. Розв’язок var cars = ["Volvo", "BMW"]; cars.push("Mercedess"); cars[cars.length - 1] = "Toyota"; alert( cars.shift() ); cars.unshift(["Nissan","Renault"]); alert( cars );
  • 175. Цикл по елементах: var arr = ["Яблуко", "Апельсин", "Груша"]; for (var i = 0; i < arr.length; i++) { alert( arr[i] ); } Можна й for..in, але він значно повільніший. for (var key in arr) { alert( arr[key] ); // Яблуко, Апельсин, Груша }
  • 176. Задача 43 Напишіть функцію filterRange(arr, a, b), яка отримує масив чисел arr і повертає новий масив, який містить тільки числа з arr в диапазоні від a до b. Тобто перевірка має вигляд a ≤ arr[i] ≤ b. Функція не повинна міняти arr. Наприклад: var arr = [5, 4, 3, 8, 0]; var filtered = filterRange(arr, 3, 5); // тепер filtered = [5, 4, 3] // arr не змінився Підказка: створіть тимчасовий порожній масив results і заповнюйте відфільтрованими даними.
  • 177. Розв’язок function filterRange(arr, a, b) { var result = []; for (var i = 0; i < arr.length; i++) { if (arr[i] >= a && arr[i] <= b) { result.push(arr[i]); } } return result; } var arr = [5, 4, 3, 8, 0]; var filtered = filterRange(arr, 3, 5); alert( filtered );
  • 178. Властивістю length можна керувати довжиною масиву: var arr = [1, 2, 3, 4, 5]; arr.length = 2; // вкоротили до 2 елементів alert( arr ); // [1, 2] arr.length = 5; // відновили довжину alert( arr[3] ); // undefined: значення не вернулись Можна очистити масив так: arr.length=0;
  • 179. Ще один спосіб створення масиву: var arr = new Array("Яблуко", "Груша", "Слива"); new Array(n) – створюється масив довжини n, але без елементів! Цей спосіб краще уникати. Багатовимірні масиви Оскільки елементом масиву може бути навіть інший масив, це дозволяє створювати багатовимірні масиви на зразок: var matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; alert( matrix[1][1] ); // центральний елемент - 5
  • 180. Методи масивів split string.split(separator[, limit]) Приклади: var names = 'Іван, Степан, Петро, Віктор'; var arr = names.split(', '); alert(arr); // Іван,Степан,Петро,Віктор var names = 'Іван, Степан, Петро, Віктор'; var arr = names.split(', ', 3); alert(arr); // Іван,Степан,Петро var str = "слово"; alert( str.split('') ); // с,л,о,в,о
  • 181. join array.join([separator]) Елементи масиву об’єднуються в рядок. Приклади: var fruits = ["Banana", "Orange", "Apple", "Mango"]; var energy = fruits.join(); alert( energy ); // Banana,Orange,Apple,Mango var fruits = ["Banana", "Orange", "Apple", "Mango"]; var energy = fruits.join(" + "); alert( energy ); // Banana + Orange + Apple + Mango
  • 182. splice array.splice(index[, howmany, item1, ....., itemX]) Видаляє howmany елементів масиву починаючи з індекса index і вставляє на їх місце item1, ....., itemX. Якщо index від’ємний – відраховується з кінця. Метод повертає масив з видалених елементів. Приклад: var users = ["Люда", "Марина", "Іра", "Вася", "Коля"]; var boys = users.splice(3, 2, "Ніна", "Зіна"); alert( users ); // Люда,Марина,Іра,Ніна,Зіна alert( boys ); // Вася,Коля
  • 183. Задача 44 У масиві numbers = [1, 2, 3, 4, 5, 6, 7, 8] поміняйте місцями першу і другу половину. Тобто результатом виконання коду має бути масив [5,6,7,8,1,2,3,4].
  • 184. Розв’язок var numbers = [1, 2, 3, 4, 5, 6, 7, 8]; var arr1 = numbers.splice(0, numbers.length/2); arr1.splice(0,0,numbers); alert( arr1 );
  • 185. slice array.slice(start, end) Повертає ділянку масиву від begin до end, не включаючи end. Вихідний масив при цьому не змінюється. Приклад: var numbers = ["Один", "Два", "Три", "Чотири", "П'ять"]; alert( numbers.slice(1, 4) ); // Два,Три,Чотири alert( numbers ); // Один,Два,Три,Чотири,П'ять Якщо аргументу end нема – копіювання йде до кінця масиву. Від’ємні індекси відраховуються з кінця.
  • 186. sort() array.sort([compareFunction]) compareFunction – функція порівняння. sort() – порівняння рядкових величин у порядку зростання: var arr = [ 1, 2, 15 ]; arr.sort(); alert( arr ); // 1, 15, 2 !!!
  • 187. Функція сортування дозволяє задавати свій порядок сортування. Вона отримує два аргументи a, b і повинна повертати число > 0, якщо a > b. Приклад: function compareNumeric(a, b) { return (a > b) ? 1 : -1; } var arr = [ 1, 2, 15 ]; arr.sort(compareNumeric); // тільки ім’я функції! alert(arr); // 1, 2, 15 Можна задавати compareNumeric простіше: function compareNumeric(a, b) { return a - b; }
  • 188. Задача 45 Нехай є масив var points = [13, 2, 3, 0, -5, 6, 17, 8, 9, 10]; Напишіть функцію getMinMax(arr), яка отримує масив чисел і виводить масив з двох чисел – мінімального і максимального елементів вихідного масиву. Розв’язок (з коментарями і належним оформленням коду) надішліть на адресу viligurskyi@gmail.com
  • 189. reverse array.reverse() Змінює порядок елементів у масиві. var fruits = ["Banana", "Orange", "Apple"]; fruits.reverse(); Результат: Apple,Orange,Banana
  • 190. Задача 46 Напишіть функцію flipSentence, яка міняє порядок слів у тексті "Жили-були дід і баба" на зворотний. Розв’язок (з коментарями і належним оформленням коду) надішліть на адресу viligurskyi@gmail.com
  • 191. Задача 47 Є текст "Іван Сидорук, Петро Гнатюк, Василь Коваленко". Треба написати функцію change, яка видає текст, де ім’я і прізвище переставлені місцями. Розв’язок (з коментарями і належним оформленням коду) надішліть на адресу viligurskyi@gmail.com
  • 192. concat array1.concat(array2, array3, ..., arrayX) array2, array3, ... – масиви чи інші елементи. Приклад: var arr1 = [1, 2]; var arr2 = [3, 4]; var newArr = arr1.concat(arr2, 5); alert( newArr ); // 1,2,3,4,5