— Привет, Амиго!
— Привет, Билаабо!
— Рад тебя видеть. Сегодня у нас небольшое, но очень познавательное занятие. Сегодня я расскажу тебе о языке 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 очень мало строгих правил и очень много анархии.
Можно объявить функцию с 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);
Чтобы создать новый объект достаточно написать две фигурные скобки «{}».
Внутри скобок можно указать данные объекта в формате «ключ, двоеточие, значение, запятая».
К полям объекта можно обращаться двумя способами:
m.age = 45;
m[“age”] = 45;
Если указанного поля нет, оно создается.
Что-то мой газовый пузырь переполнился, думаю надо сделать перерыв.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ