„Здрасти, Амиго!“

„Здравей, Билаабо!“

„Радвам се да ви видя. Днес имаме малък, но много информативен урок. Днес ще ви разкажа за езика JavaScript.“

JavaScript - 1

„Нов език? Колко интересно…“

"JavaScript в момента е популярен благодарение на Интернет. Факт е, че това е единственият език, който всички браузъри могат да изпълняват. Ако искате да добавите анимация or логика към вашата уеб page, тогава можете да го направите с JavaScript."

„Вярно ли е, че JavaScript е най-популярният език?“

„Да, но би било по-точно да се каже, че това е най-популярният „втори език“. Програмистите на C++, Java, C# и PHP трябва да пишат малки скриптове в JavaScript, за да оживят своите уеб страници. Но много по-малко хора само пишете code в JavaScript."

„Защо се казва JavaScript? Звучи почти като Java.“

„Всъщност, първоначално се наричаше LiveScript, но когато Java започна да става по-популярна, беше преименувана на JavaScript.“

"Java и JavaScript са два напълно различни езика. Не ги бъркайте."

„За разлика от Java, JavaScript няма класове и не поддържа статично писане, многопоточност и много повече. Java е като голям набор от инструменти за конструиране, докато JavaScript е по-скоро като швейцарско ножче. JavaScript е проектиран да решава малки задачи, но Java е за решаване на големи и много големи задачи."

„Ето някои факти за JavaScript:“

„Първият факт е, че JavaScript има функции, но няма класове“

„Просто пишете програми, като използвате няколко функции и това е. Например:“

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

„Новите функции се декларират с помощта на «функция <име>».

"Друг пример:"

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

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 ? a : b;
}

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();
}

„В примера по-горе използвахме променливата k (цяло число) instead of s (низ). В Java грешката ще бъде открита по време на компorране, но в JavaScript ще бъде уловена едва по-късно, когато codeът бяга."

„Ако искате да декларирате променлива в JavaScript, трябва да напишете «var <name>». Няма типове променливи и няма типове за методи/функции or техните аргументи.“

„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);
 }
}

„Те са доста сходни. Мисля, че мога да разбера How работи codeът, написан на JavaScript.“

— Оптимизмът ви е добър.

„Четвъртият факт е, че JavaScript поддържа блокове try-catch-finally“

" JavaScript има изключения ( Error ) и това е добре. Той няма проверени изключения, само непроверени изключения, подобни на 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);
 }
}

„Когато се опитаме да получим дължината на низа, ще бъде хвърлено изключение, тъй като променливата е нула.“

„Петият факт е, че JavaScript има масиви“

„Добра новина: JavaScript има масиви. Лоша новина: няма списъци or колекции.“

„Друга добра новина е, че масивите могат динамично да се разширяват, когато се добавят нови елементи, и да намаляват, когато елементите се премахват. Това е по-скоро хибрид между масив и списък.

Например:

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;

„Ако посоченото поле не съществува, то се създава.“

„Моят предпазен клапан е претоварен or нещо подобно. Мисля, че трябва да си вземем почивка.“

„Седмият факт е, че JavaScript е създаден да работи в уеб страници.“