JavaRush /Курсы /JSP & Servlets /Основные понятия в JavaScript

Основные понятия в JavaScript

JSP & Servlets
7 уровень , 1 лекция
Открыта

2.1 Переменные и боль

Начнем с самого интересного. В JavaScript есть переменные, но у этих переменных нет типа. Любой переменной можно присвоить абсолютно любое значение. Выглядит безобидно или даже удобно, пока вам не понадобятся типы.

Для объявления переменной используется ключевое слово var:

var name;
var name = value;

Примеры работы с переменными в JavaScript:


var a = 10, b = 20;
var c = a*a + b*b;

var s = "Диагональ равна:";
console.log( s + Math.sqrt(c));

Отличный и понятный код, не правда ли? Возможно, это последний раз в твоей жизни, когда вы видите красивый и понятный JavaScript код. Запомни этот момент :)

2.2 Типизация в JavaScript

Как уже говорилось выше, у переменных в языке JavaScript типа нет. Но вот у значений переменных типы есть. Вот 5 самых распространенных типов в JavaScript:

# Тип Пример Описание
1 Number
var pi = 3.14;
Содержит любое число
2 String
var s = "Привет!";
Содержит строку
3 Boolean
var result = true;
Содержит true или false
4 Array
var arr = [1, 2, 3, 4, 5];
Содержит массив элементов
5 Date
var current = new Date();
Содержит дату
6 Object
var o = {
   width: 100,
   height: 200
}
Содержит объект, который состоит из пар key, value. Чем-то похож на HashMap в Java
7 Function
function sqr(var x) {
   return x*x;
}
Функция

Для определения типа объекта используется ключевое слово typeof, пример:


var s = "134";
var x = (typeof s == "String") ? s*1 : s;

2.3 Функции и return

Ну и конечно же в JavaScript есть функции. Классов там нет, так что объявлять функции можно в любом месте кода. Даже в других функциях. Общий формат имеет вид:


   function name(a, b, c) {
     // код функции
      return result;
   }

Типа у функции нет. А зачем, если в самом языке нет контроля совместимости типов? Параметры функции тоже могут отсутствовать. Как и команда return, которая возвращает значение.

При вызове функции можно передавать любое количество параметров любого типа. Лишние отбросится, недостающие будет равны null.

Примеры функций:


    function getValue(name)
    {
        return this[name];
    }

    function setValue(name, value)
    {
        this[name] = value;
    }

2.4 Массивы в JavaScript

Массивы в JavaScript очень похожи на массивы в Java. Примеры:


   var array = [1, 2, 3, 4, 5];
   array[3] = array[2];
   console.log (array[0]);

Они могут иметь значения любого типа, даже другие массивы:


   var array = [1, "Привет", 3.14, [4, 5] ];
   array[3] = array[2];
   console.log (array[0]);

Кроме того, массивы также ведут себя как коллекции – в них можно динамически добавлять элементы:


   var array = [];
   array.push(100);
   array.push(101);
   array.push(102);
 
   array[1] = array[2];
   console.log (array[0]);

2.5 Объекты в JavaScript

Объекты в JavaScript очень похожи на HashMap из Java: они содержат пары ключ-значение. Пример:


   var obj = {
    name: "Bill Gates",
    age: 67,
    company: "Microsoft"
   };
 
   console.log (obj.age);

К полям объекта можно обращаться двумя разными способами:

var x = obj.age;
var x = obj["age"];

Как и в случае с HashMap, поля можно создавать и удалять. Пример:


   var obj = {};
   obj.name = "Bill Gates";
   obj.age = 67;
   obj.company = "Microsoft";
 
   delete obj.age;  //удаление поля
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Кирилл Уровень 115
15 мая 2025
Возник вопрос по коду: var s = "134"; var x = (typeof s == "String") ? s*1 : s; Т.к. тернарный оператор работает следующим образом (по крайней мере в Java) : Общий шаблон: <predicate> ? <expression on true> : <expression on false>, Возник вопрос, какое значение присваивается переменной х? Решил долго не искать и задал вопрос чату gpt: "чему равен x? var s = "134"; var x = (typeof s == "String") ? s*1 : s; JavaScript" Получил следующий ответ: Разберем данную ситуацию подробно. Мы имеем две переменные: Строковую переменную s, содержащую строку "134". Переменную x, определяемую условием: var x = (typeof s == "String") ? s*1 : s; Здесь выполняется следующее действие: Проверяется тип переменной s: typeof s Так как s — это строка, её тип определяется как "string", а не "String". Поэтому выражение (typeof s == "String") возвращает false. Когда условие ложно, тернарный оператор выбирает второе значение (s), а значит, присваивает x саму строку "134". Важно отметить одну деталь: даже если мы хотим привести строку к числу (например, путём умножения на единицу), нам всё равно нужен верный тип в условии. То есть правильно проверять таким образом: (typeof s == "string") Теперь посмотрим на возможные сценарии: Сценарий 1 (при правильном сравнении): Если написать правильно: var x = (typeof s == "string") ? s*1 : s; Результат будет числом, так как строка "134" будет успешно преобразована в число при умножении на единицу: x=134 Сценарий 2 (текущий вариант): Поскольку проверка выполнена неверно (typeof s == "String"), результат остаётся строкой: x="134" Ответ При таком написании (неправильной проверке типа): x="134" А если переписать условие правильно: x=134 Так что правильный ответ, исходя из текущего кода: x="134"
Виктор Уровень 40
19 сентября 2023
Вот 5 самых распространенных типов в JavaScript: 1, 2, 3, 4, 5, 6, 7 :) Читаешь комменты где пишут что все это устарело и что сейчас не так, и теряешься а полезна ли лекция вообще. А надо ли в неё вчитываться и конспектировать...
Arthur Kozlov Уровень 115
23 декабря 2025
Я уже сам устал от этих приколов. "Вот вам знания, но они устарели, поэтому вот вам актуальные знания". Потом сидишь вспоминаешь по памяти какой класс мы используем, чтобы работать с Датой.
Евгений Уровень 90
14 октября 2022
var устаревшее объявление, сейчас используют let и const. В современном мире пишут на языке TypeScript, в котором с типизацией всё в порядке. Тот же JavaScript, только добавили типы. TypeScript изучается за один день.
Владимир Уровень 109 Expert
1 сентября 2022
Так что в итоге будет присвоено переменной X ?

var s = "134";
var x = (typeof s == "String") ? s*1 : s;
Владимир Уровень 109 Expert
1 сентября 2022
если строка, то присвоено число, а если не строка, то присвоена строка?
Andrey Panchenko Уровень 26
16 сентября 2022
F12 -> Console -> копируешь код -> вставляешь и дописываешь строку вывода типа полученного x -> кликаешь enter -> получаешь вывод "string" var s = "134"; var x = (typeof s == "String") ? s*1 : s; console.log(typeof x); string
Сергей Уровень 111 Expert
9 октября 2022

var s = "134";
var x = (typeof s == "String") ? s*1 : s;
console.log(typeof x);
Вывод: string 

var s = 134;
var x = (typeof s == "String") ? s*1 : s;
console.log(typeof x); 
Вывод: number
Михаил Уровень 94
23 мая 2025
Рассмотрим, что здесь происходит пошагово: s — это строка "134". Выражение typeof s возвращает строку "string" (в нижнем регистре), а не "String". Условие (typeof s == "String") возвращает false, потому что "string" != "String". Из-за этого тернарный оператор выбирает вторую ветку: s, а не s * 1. Ответ: x = "134"
Ираклий Уровень 112
10 июня 2025
а откуда во втором примере number? или string это не строга а тип данных и получается number это типа данных 134?