— Привет, Амиго!

— Привет, Билаабо!

— Рад тебя видеть. Сегодня у нас небольшое, но очень познавательное занятие. Сегодня я расскажу тебе о языке JavaScript.

JavaScript - 1

— Новый язык? Как интересно…

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

— А правда, что JavaScript – самый популярный язык?

— Да, но тут правильнее было бы сказать, что он самый популярный «второй язык». Программисты на C++, Java, C#, PHP вынуждены писать небольшие скрипты на JavaScript, чтобы оживить свои интернет-страницы. В то же время, людей, которые пишут только на JavaScript гораздо меньше.

— А почему у него такое название – JavaScript? Звучит почти как Java.

— На самом деле сначала он назывался LiveScript, но когда Java начала набирать популярность, его переименовали в JavaScript.

Java и JavaScript — это два совершенно разных языка, не стоит их путать.

JavaScript, в отличие от Java, не имеет классов, не поддерживает статическую типизацию, многопоточность и много чего еще. И если Java – это скорее большой набор строительных инструментов, то JavaScript – это швейцарский нож. JavaScript создан для решения маленьких задач, а Java – для больших и очень больших.

Вот тебе несколько фактов о JavaScript:

Факт первый – в JavaScript есть функции, но нет классов

Просто пишешь логику программы в нескольких функциях и все. Пример:

JavaScript
function min(a, b)
{
 return a
}
Java
public static int min(int a, int b)
{
return a
}

Новые функции объявляются с помощью конструкции «function+имя».

Еще пример:

JavaScript
function min(ab)
{
 return a<b ? ab;
}

function main()
{
 var s = 3;
 var t = 5;
 var min = min(s, t);
}
Java
public static int min(int a, int b)
{
 return a<b ? ab;
}

public static void main()
{
 int s = 3;
 int t = 5;
 int min = min(s,t);
}

Факт второй – в JavaScript есть переменные, но у них нет типов

JavaScript – это язык с динамической типизацией. Это значит, что у переменных, по факту, нет типов. Любой переменной можно присвоить значение любого типа (у значений типы есть). Пример:

JavaScript
function main()
{
 var s = "Bender";
 var k = 1;
 var n = s.length;
}
Java
public static void main()
{
 String s ="Bender";
 int k = 1;
 int n = s.length();
}

Но динамическая типизация увеличивает риск ошибок во время работы программы:

JavaScript
function main()
{
 var s = "Bender";
 var k = 1;
 var n = k.length;
}
Java
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 и это – хорошая новость. Смотрим примеры:

JavaScript
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);
 }
}
Java
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. Пример:

JavaScript
function main()
{
 try
 {
  var s = null;
  var n = s.length;
 }
 catch(e) 
 {
  alert(e);
 }
}
Java
public static void main()
{
 try
 {
  String s = null;
  int n = s.length();
 }
 catch(Exception e) 
 {
  System.out.println(e);
 }
}

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

Факт пятый – в JavaScript есть массивы

Хорошая новость. В 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]);
 }
}
Java
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. Пример объявления объекта:

JavaScript
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;
Java
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;

Если указанного поля нет, оно создается.

Что-то мой газовый пузырь переполнился, думаю надо сделать перерыв.

Факт седьмой – JavaScript создан, чтобы работать внутри web-страниц.