Урок 2 из 18
В прогрессе

2. Типы данных, операторы, методы и свойства

Переменные

Переменная – это «именованное хранилище» для данных. Мы можем использовать переменные для хранения товаров, посетителей и других данных.

Для создания переменной в JavaScript используйте ключевое слово let или const.

let

Приведённая ниже инструкция создаёт (другими словами: объявляет или определяет) переменную с именем «message»:

let message

Теперь можно поместить в неё данные, используя оператор присваивания =:

let message;
message = 'Hello!';

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

let message = 'Hello!';

В ту же переменную можно поместить новые данные 

let  message = 'Hello!'; 

message = ‘World!’;

Мы также можем объявить две переменные и скопировать данные из одной в другую.

let hello = 'Hello world!';

let message = hello ; 

!!!  Обратите внимание, что переменной, объявленную через let, можно переназначать данные.

const

Чтобы объявить константную, то есть, неизменяемую переменную, используйте const вместоlet:

const myBirthday = '18.04.1982';

Переменные, объявленные с помощью const, называются «константами». Их нельзя изменить. Попытка сделать это приведёт к ошибке.

Типы данных

Число

let n = 123;
n = 12.345;

Числовой тип данных (number) представляет как целочисленные значения, так и числа с плавающей точкой.

Существует множество операций для чисел, например, умножение *, деление /, сложение +, вычитание - и так далее.

Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: Infinity-Infinity и NaN.

  • Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.Мы можем получить его в результате деления на ноль
  • NaN означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
    alert( "не число" / 2 );

     

    Строка

    Строка (string) в JavaScript должна быть заключена в кавычки.

    let str = "Привет";
    let str2 = 'Одинарные кавычки тоже подойдут';
    let phrase = `Обратные кавычки позволяют встраивать переменные ${str}`;

    В JavaScript существует три типа кавычек.

    1. Двойные кавычки: "Привет".
    2. Одинарные кавычки: 'Привет'.
    3. Обратные кавычки: `Привет`.

    Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.

    Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в ${…}.

    Длина строки

    Свойство length содержит длину строки:

    str.length

    Доступ к символам

    let str = `Hello`; // получаем первый символ alert( str[0] ); // H

    Булевый (логический) тип

    Булевый тип (boolean) может принимать только два значения: true (истина) и false (ложь).

    Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».

    Например:

    let nameFieldChecked = true; // да, поле отмечено
    let ageFieldChecked = false; // нет, поле не отмечено

    Булевые значения также могут быть результатом сравнений:

     
     
    let isGreater = 4 > 1;
    
    alert( isGreater ); // true (результатом сравнения будет "да")

    Значение «null»

    Специальное значение null не относится ни к одному из типов, описанных выше.

    Оно формирует отдельный тип, который содержит только значение null:

    let age = null;

    В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.

    Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».

    В приведённом выше коде указано, что значение переменной age неизвестно.

    Значение «undefined»

    Специальное значение undefined также стоит особняком. Оно формирует тип из самого себя так же, как и null.

    Оно означает, что «значение не было присвоено».

    Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined:

     
     
    let age;
    
    alert(age); // выведет "undefined"
    

    Объекты и символы

    Тип object (объект) – особенный.

    Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.

    Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.

    Тип symbol (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.

    Оператор typeof

    Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.

    У него есть две синтаксические формы:

    1. Синтаксис оператора: typeof x.
    2. Синтаксис функции: typeof(x).

    Другими словами, он работает со скобками или без скобок. Результат одинаковый.

Базовые операторы, математика

Математика

Поддерживаются следующие математические операторы:

  • Сложение +,
  • Вычитание -,
  • Умножение *,
  • Деление /,
  • Взятие остатка от деления %,
  • Возведение в степень **.

Взятие остатка %

Оператор взятия остатка %, несмотря на обозначение, никакого отношения к процентам не имеет.

Результат a % b – это остаток от целочисленного деления a на b.

Например:

 
 
alert( 5 % 2 ); // 1, остаток от деления 5 на 2
alert( 8 % 3 ); // 2, остаток от деления 8 на 3
alert( 8 % 4 ); // 0, остаток от деления 8 на 4

Возведение в степень **

В выражении a ** b оператор возведения в степень умножает a на само себя b раз.

Например:

 
 
alert( 2 ** 2 ); // 4  (2 умножено на себя 2 раза)
alert( 2 ** 3 ); // 8  (2 * 2 * 2, 3 раза)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2, 4 раза)

Математически, оператор работает и для нецелых чисел. Например, квадратный корень является возведением в степень 1/2:

 
 
alert( 4 ** (1/2) ); // 2 (степень 1/2 эквивалентна взятию квадратного корня)
alert( 8 ** (1/3) ); // 2 (степень 1/3 эквивалентна взятию кубического корня)

Сложение строк при помощи бинарного +

Давайте рассмотрим специальные возможности операторов JavaScript, которые выходят за рамки школьной арифметики.

Обычно при помощи плюса '+' складывают числа.

Но если бинарный оператор '+' применить к строкам, то он их объединяет в одну:

let s = "моя" + "строка";
alert(s); // моястрока

Обратите внимание, если хотя бы один операнд является строкой, то второй будет также преобразован в строку.

Например:

 
 
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"

 

Сложение и преобразование строк — это особенность бинарного плюса +. Другие арифметические операторы работают только с числами и всегда преобразуют операнды в числа.

Например, вычитание и деление:

 
 
alert( 6 - '2' ); // 4, '2' приводится к числу
alert( '6' / '2' ); // 3, оба операнда приводятся к числам

Операторы сравнения

Многие операторы сравнения известны нам из математики.

В JavaScript они записываются так:

  • Больше/меньше: a > ba < b.
  • Больше/меньше или равно: a >= ba <= b.
  • Равно: a == b. Обратите внимание, для сравнения используется двойной знак равенства ==. Один знак равенства a = b означал бы присваивание.
  • Не равно. В математике обозначается символом , но в JavaScript записывается как a != b.

В этом разделе мы больше узнаем про то, какие бывают сравнения, как язык с ними работает и к каким неожиданностям мы должны быть готовы.

В конце вы найдёте хороший рецепт того, как избегать «причуд» сравнения в JavaScript.

Результат сравнения имеет логический тип

 

Все операторы сравнения возвращают значение логического типа:

  • true – означает «да», «верно», «истина».
  • false – означает «нет», «неверно», «ложь».

Например:

 
 
alert( 2 > 1 );  // true (верно)
alert( 2 == 1 ); // false (неверно)
alert( 2 != 1 ); // true (верно)

 

Результат сравнения можно присвоить переменной, как и любое значение:

 
let result = 5 > 4; // результат сравнения присваивается переменной result
alert( result ); // true

Строгое сравнение

Использование обычного сравнения == может вызывать проблемы. Например, оно не отличает 0 от false:

alert( 0 == false ); // true

Оператор строгого равенства === проверяет равенство без приведения типов.

Другими словами, если a и b имеют разные типы, то проверка a === b немедленно возвращает false без попытки их преобразования.

Задание

Проснувшись однажды утром после беспокойного

1) Следующим переменным присвоить значения 

   — name— написать свое имя,

   — number — любое число ,

   — age — возраст  , 

   — someAnimals — строка с перечислением любимых животных (минимум 3 значения), 

   — boolean — любое булевое значение,

 

 

2) Используя методы и свойства:

   — Вывести в консоль тип данных значений переменных name, number, someAnimals ;

   — Вывести в консоль длину строки name

   — Вывести в консоль “Меня зовут name” и “Мне age лет ”

3) Проверить, чтобы все работало без ошибок в консоли