JavaScript

Открыта

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

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

— Рад тебя видеть. Сегодня у нас небольшое, но очень познавательное занятие. Сегодня я расскажу тебе о языке 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(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();
}

В примере выше, мы подставили вместо 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-страниц.

Комментарии (116)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Kostiantyn BuhaiovJava Developer в NgSoft
28 марта, 13:21
Факт первый – в JavaScript есть функции, но нет классов Уже есть
14 мая 2025, 06:55
а у вас лекция протухла
15 апреля 2025, 17:39
Это точно курс по коллекциям? Что дальше? Лекция по Питону?
{Java_Shark}
Уровень 36
28 января 2025, 14:32
++
Dmitry Dovgal
Уровень 24
29 октября 2024, 11:53
В JS уже есть классы :)
DanielCEO в BicycleInventionAcad
12 марта 2023, 01:08
Мне одному больно смотреть на то, что пишут джаваскриптизеры?
Rolik
Уровень 41
13 мая 2023, 09:46
JS ща один из самых востребованных на рынке. На нем пишут сайты.
DanielCEO в BicycleInventionAcad
13 мая 2023, 09:50
Это не делает его логичным, читабельным или приятным для восприятия.
Rolik
Уровень 41
13 мая 2023, 14:41
Хех... Вы код на Kotlin видели ?
DanielCEO в BicycleInventionAcad
13 мая 2023, 21:16
Видел. Отдает питоном. Не нравится. Да, короче. Да, меньше кода. Да, компактнее. Но нет вот этого джавовского: на сигнатуру посмотрел и все знаешь. А мне эта фишка прям вот очень нравится.
Rolik
Уровень 41
14 мая 2023, 13:28
И мне.
28 февраля 2024, 12:54
ну , не привычно, но Js в 5 раз легче , как по мне. Потому что меньше писать, понятнее и вроде нет ООП
Ilia lenskii
Уровень 32
2 июня 2024, 12:53
JS привык, а вот к TS уже нет (
Denis Odesskiy Full Stack Developer
25 августа 2024, 19:47
JS во многом парадоксальный язык. Ни в жизни бы не сказал что он очень простой. Т.е. да на нём можно сделать просто простое, а вот что посложнее, начинается эквилибристика. В любом случае сайты на JS, как кто-то сказал не пишут. Это лишь небольшой кусочек технологии, стека , который должен знать в том числе java-разработчик. П/С: Пайтон, как по мне, проще, хотя в нём и ООП есть хоть и кастрированное и даже множественное наследование. Ну опять же на вкус и цвет, мне например язык поддерживающий ООП нравится больше, и своими возможностями и масштабируемостью... Хотя всё это инструменты, учить надо программирование как науку, на основе какого-то ЯП основного, а выучить доп. ЯП не такая уж проблема, понимая суть. Всё +- одинаково везде, даже в пайтоне и js хотя они в отличие от джавы не статически типизированные. В пайтоне например не хватает интерфейсов, но есть ABC классы (абстрактные), которыми можно имитировать интерфейсы, ну в общем все тоже, только в профиль, так сказать... Есть еще TypeScript это JS со строгой типизацией, приблуда еще больше похожая на java. В любом случае, как и сказано в лекции, это вторые (да-да я знаю про Node.js) яп для уважающего себя программиста. Да и еще, согласно последней версии спецификации JS ES6, ключевое слово var считается устаревшим, желательно объявлять переменные используя let для изменяемых переменных и const для неизменяемых. Там в частности с глобальной/локальной видимостью есть разница. Также в JS есть симуляция классов, синтаксически привычная, но на деле это синтаксический сахар и под капотом все работает как объекты, т.е. там нет полноценного классического ООП. Также можно (и рекомендуется) использовать строгий режим "use strict"
Dok3R73
Уровень 42
24 января 2023, 20:08
К концу лекции подумал, нафига я выбрал java😂
31 августа 2023, 12:09
Java Script - сам по себе это лишь кусочек стака технологий который нужен web разработчикам, его используют в купе с другими инструментами HTML CSS. Тобишь нет такой работы JavaScript developer....
Edward Northwind
Уровень 37
17 января 2023, 18:33
Я наконец-то понял, что подразумевалось под Java Collections... Это не коллекции в Java. Это набор различных тем, что не смогли или не захотели оформлять отдельными разделами. Я то думал тут будут уроки по продвинутым коллекциям, но похоже всё что нам светит - это то, что мы прошли на Java Syntax.
GBRTANK WARBOT
Уровень 38
9 ноября 2022, 18:40
После этой лекции хорошо посмотреть следующее видео Стащук - JavaScript - Полный Курс JavaScript Для Начинающих [11 ЧАСОВ]
5 декабря 2022, 15:29
¡Gracias!
Fl1s Backend Developer
15 января 2024, 16:24
Слишком много воды
Стас
Уровень 41
20 сентября 2022, 14:11
Какая же гадость это ваш LiveScript(