— Привіт, Аміго!
— Привіт, Білаабо!
— Радий тебе бачити. Сьогодні у нас невелике, але дуже пізнавальне заняття. Сьогодні я розповім тобі про мову JavaScript.
— Нова мова? Як цікаво…
— JavaScript зараз популярний завдяки інтернету. Справа в тому, що це єдина мова, яку вміють виконувати всі браузери. Якщо ти хочеш додати анімацію або деяку логіку до своєї інтернет-сторінки, то ти можеш зробити це за допомогою JavaScript.
— А чи правда, що JavaScript – найпопулярніша мова?
— Так, але тут правильніше було б сказати, що він найпопулярніший «друга мова». Програмісти C++, Java, C#, PHP змушені писати невеликі скрипти на JavaScript, щоб оживити свої інтернет-сторінки. У той же час людей, які пишуть тільки на JavaScript набагато менше.
— А чому в нього така назва JavaScript? Звучить майже як Java.
— Насправді спочатку він називався LiveScript, але коли Java почала набирати популярності, його перейменували на JavaScript.
Java та JavaScript — це дві абсолютно різні мови, не варто їх плутати.
JavaScript, на відміну від Java, не має класів, не підтримує статичну типізацію, багатопоточність та багато чого ще. І якщо Java – це скоріше великий набір будівельних інструментів, то JavaScript – це швейцарський ніж. JavaScript створений для вирішення маленьких завдань, а Java – для великих і дуже великих.
Ось тобі кілька фактів про JavaScript:
Факт перший – у JavaScript є функції, але немає класів
Просто пишеш логіку програми в кількох функціях і все. Приклад:
function min(a, b)
{
return a
}
public static int min(int a, int b)
{
return a
}
Нові функції оголошуються за допомогою конструкції «function+ім'я».
Ще приклад:
function min(a, b)
{
return a<b ? a: b;
}
function main()
{
var s = 3;
var t = 5;
var min = min(s, t);
}
public static int min(int a, int b)
{
return a<b ? a: b;
}
public static void main()
{
int s = 3;
int t = 5;
int min = min(s,t);
}
Факт другий – у JavaScript є змінні, але у них немає типів
JavaScript – це мова з динамічною типізацією. Це означає, що з змінних, за фактом, немає типів. Будь-якій змінній можна надати значення будь-якого типу (у значень типи є). Приклад:
function main()
{
var s = "Bender";
var k = 1;
var n = s.length;
}
public static void main()
{
String s ="Bender";
int k = 1;
int n = s.length();
}
Але динамічна типізація збільшує ризик помилок під час роботи програми:
function main()
{
var s = "Bender";
var k = 1;
var n = k.length;
}
public static void main()
{
String s ="Bender";
int k = 1;
int n = k.length();
}
У прикладі вище, ми підставили замість s (рядки), змінну k (число). У випадку з Java помилка буде виявлена на етапі компіляції, у випадку з JavaScript – пізніше: вже під час виконання цього коду. Якщо хочеш оголосити змінну в JavaScript, треба написати «var+ім'я ». Типів змінних немає, так само немає типів методів/функцій та їх аргументів.
У JavaScript дуже мало строгих правил і дуже багато анархії.
span>Можна оголосити функцію з 5 аргументами, а викликати з двома – решта дорівнюватиме null. Можна оголосити функцію з двома аргументами, а під час виклику передати п'ять. Три просто відкинуться. Контроль за помилками, друкарськими помилками, змінами – мінімальний.
Факт третій – у JavaScript є if, for, while
У JavaScript є if, for, while і це – хороша новина. Дивимося приклади:
function main()
{
var s = "Bender";
var result = "";
for(var i=0;i<s.length;i++)
{
result += s[i]+ "";
}
if(result.length>10)
{
alert (result);
}
else
{
while(result.length <= 10)
{
result += " ";
}
alert(result);
}
}
public static void main()
{
String s = "Bender";
char[] s2 = s.toCharArray();
String result = "";
for(int i=0;i<s.length();i++)
{
result += s2[i]+ "";
}
if(result.length()>10)
{
System.out.println(result);
}
else
{
while (result.length() <= 10)
{
result += " ";
}
System.out.println(result);
}
}
— Досить схоже. Думаю, я міг би розібратися, як працює код, написаний на JavaScript.
— Оптимізм – це добре.
Факт четвертий – у JavaScript є try-catch-finally
У JavaScript є винятки (Error ) і це добре. checked винятків немає, тільки unchecked – аналог RuntimeException. try-catch-finally працює так само, як і Java. Приклад:
function main()
{
try
{
var s = null;
var n = s.length;
}
catch(e)
{
alert(e);
}
}
public static void main()
{
try
{
String s = null;
int n = s.length();
}
catch(Exception e)
{
System.out.println(e);
}
}
При спробі дізнатися довжину рядка буде викинуто виняток, т.к. змінна посилається на null.
Факт п'ятий – у JavaScript є масиви
Хороша новина. JavaScript має масиви. Погана - там немає ні списків, ні колекцій. Ще одна хороша новина - масиви можуть динамічно розтягуватися, при додаванні нових елементів і зменшуватися при їх видаленні. Більше схоже на гібрид масиву та списку.
Приклад:
function main()
{
var m = [1,3,18, 45, 'c', "roma", null];
alert(m.length); //7
m.push("end");
alert(m.length); //8
for (var i=0;i<m.length;i++)
{
alert(m[i]);
}
}
public static void main()
{
List m = Arrays.asList(1,3,18, 45,'c', "roma", null);
System.out.println(m.size());//7
m.add("end");
System.out.println(m.size());//8
for (int i=0;i<m.size();i++)
{
System.out.println(m.get(i));
}
}
— А що це за квадратні дужки під час оголошення масиву?
— Це і є оголошення масиву. Щоб оголосити масив, треба написати квадратні дужки, а між ними перерахувати елементи масиву. Порожній масив оголошується просто парою дужок.
var m = []; Факт шостий – у JavaScript є об'єкти
У JavaScript є об'єкти. Насправді все JavaScript є об'єктом, примітивні типи теж. Кожен об'єкт представлений у вигляді набору пар «ключ-значення». Грубо кажучи, кожен об'єкт JavaScript – це аналог HashMap Java. Приклад оголошення об'єкта:
function main()
{
var m = {
first_name : "Bill",
last_name: "Gates",
age: 54,
weight: 67,
children: ["Emma", "Catrin"],
wife: {
first_name : "Melinda",
last_name: "Gates",
age: 45,
}
};
alert(m.first_name); // Bill
alert(m.age); // 54
alert(m.wife.first_name);// Melinda
m.age = 45;
m.age++;
m["first_name"] = "Stive";
m["wife"] = null;
public static void main()
{
HashMap m = new HashMap();
m.put("first_name", "Bill");
m.put("last_name", "Gates");
m.put("age", 54);
m.put("weight", 67);
String[] children = {"Emma","Catrin"};
m.put("children", children);
HashMap wife = new HashMap();
wife.put("first_name", "Melinda");
wife.put("last_name", "Gates");
wife.put("age", 45);
m.put("wife", wife);
System.out.println(m.get("first_name"));
System.out.println(m.get("age"));
HashMap w = ((HashMap)m.get("wife"));
System.out.println(w.get("first_name")));
m.put("age", 45);
m.put("age", ((Integer)m.get("age"))+1);
m.put("first_name","Stive");
m.put("wife", null);
Щоб створити новий об'єкт, достатньо написати дві фігурні дужки «{}».
Всередині дужок можна вказати дані об'єкта у форматі «ключ, двокрапка, значення, кома».
До полів об'єкта можна звертатися двома способами: Еквівалентні записи
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ