Переменной называется ячейка оперативной  памяти компьютера, которая имеет имя и может хранить данные.

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

Слово var происходит от английского variable, т.е. переменная.

С появлением стандарта ES6 в 2015 году, вы можете также при объявлении переменных использовать ключевые слова let и для объявления констант - const. Об их особенностях можно прочитать в отдельной статье.

Можно объявить сразу несколько переменных через запятую, используя одно ключевое слово var, let, const:

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

Эти данные будут сохранены в соответствующей ячейке памяти компьютера, и в дальнейшем будут использованы в каких-либо действиях: расчетах, функциях, выводе информации на экран или в консоль браузера:

Очень интересно, как читается выражение temp=0. Если произносить словами, то это не "темп равно ноль", а "присвоить ноль в переменную темп". Т.е. сначала создается переменная, а потом в  нее заносится значение. Можно сравнить это действие с заполнением шкафа:

Переменные в JavaScript

Представьте, что у вас есть очень-очень-очень много полочек в шкафу. И вам нужно их заполнить, как на картинке выше. Вы сначала выбираете место, т.е. полочку, а потом помещаете на нее какую-либо игрушку, тарелку, катушку или подставку для дисков. Только у полочек нет имен, у них могут быть номера, как на изображении. Для переменных в JavaScript номера не подойдут, а вот имена с номерами или без - вполне.

Можно сразу инициализировать переменную при ее объявлении, т.е. записать в нее данные:

Подобным образом можно инициализировать сразу несколько переменных:

Затем можно использовать эти переменные, чтобы изменять их в зависимости от поставленной задачи. Например,

Фактически мы оперируем значениями переменных и записываем результат математических действий в переменную start. Примерно также вы когда-то решали уравнения, если были известны значения переменных в них. Правда, вместо start и end, prev и next в математике чаще были  x и y или a и b. Ничего не мешает на первых порах вам называть так переменные и в JavaScript, но в будущем желательно давать переменным имена, которые бы отражали суть выполняемых ими действий.

Например, переменную, которая будет выводить сообщение, можно назвать a:

Но лучше, если вы дадите ей более "говорящее" имя message:

Это хорошая практика, особенно, если вы думаете заняться JavaScript всерьез.

Здесь следует отдельно остановиться на правилах именования переменных:

  • имена переменных чувствительны к регистру, т.е. ball и Ball - это 2 разных переменных;
  • имена переменных должны состоять из цифр, букв латинского алфавита, знака $ и знака нижнего подчеркивания _. Т.е. можно задать переменную $order, или pic_url, или div1, div2, div3, но нельзя использовать pic-url, т.к. это будет уже операция вычитания, или 1div, 2div, 3div. Кстати, в JS (JavaScript сокращенно) часто используется так называемый Camel Syntaxis, т.е. "горбатый синтаксис", когда имя переменной или функции состоит из 2-х-3-х слов, но пишется слитно. Причем каждое следующее слово пишется с большой буквы. Например, findPicUrl;
  • имена переменных не могут начинаться с цифры;
  • переменная должна быть объявлена до того, как вы начнете ее использовать.
  • нельзя использовать в качестве имени переменной одно из зарезервированных слов JavaScript, так как они используются в синтаксисе самого языка, например: var, class, return, export и др.

Например, такой пример выдаст синтаксическую ошибку:

Типы переменных в JavaScript

Особенностью JavaScript по сравнению с другими языками программирования является то, что не нужно при объявлении переменной задавать ее тип, как, например, в C++. Достаточно присвоить ей какое-либо значение, и тип переменной определиться автоматически. И в JavaScript  лучше использовать переменные-литералы, т.е. переменные с фиксированным значением, а не переменные-объекты.

Итак, по типу различают:
1. Числовые переменные (number):

2. Строковые переменные (string):

Неважно, в каких кавычках вы разместили строку, важно, чтобы открылась и закрылась кавычка одного типа.

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

Не разрывайте строку в JavaScript, т.е. не переносите ее с помощью клавиши Enter на новую строку, т.к. это вызовет ошибку. Если нужно вывести текст с переносом строк, например, отрывок стихотворения, используйте специальные символы:

  • \n - перенос строки
  • \t - знак табуляции
  • \\ - экранирование обратного слэша
  • \" - экранирование двойной кавычки
  • \' - экранирование одинарной кавычки

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

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

variables-type3. Логические, или булевы, переменные (Boolean)

Используются, как правило, в условных конструкциях типа if...else.

4. null - пустое значение или отсутствие данных. Используется, когда неизвестно первоначальное значение переменной или для очистки ее значения. Кроме того, с помощью этого типа данных можно отменить назначенный обработчик события.

5. NaN - Not a Number (т.е. НЕ число) - тип данных, который, как правило получается, когда пытаются произвести математические действия над переменными строкового типа. Например,

Существует специальная функция для проверки этого типа данных  - isNaN(переменная или выражение). Она возвращает true, если переменная или выражение соответствуют типу NaN, и false, если не соответствуют.

6. undefined - неопределенный. Его имеет та переменная, значение которой не указано. Как правило, мы не очень рады такому типу данных, т.к. чаще всего он получается из-за ошибок в коде.

7. Объектный тип данных (Object).

По сути дела в JS почти все переменные есть объекты, т.к. для объектов характерно наличие свойств и методов. И для строк, и для чисел такие методы доступны, если вы объявляете их и как объект типа Number или String, и как литерал строки или числа.

Например,

Но в JavaScript существуют  встроенные объекты, которые позволяют создать их только с помощью конструктора, т.е. с использованием ключевого слова new. Например, таким является объект Date:

Что касается строк или чисел - это наиболее используемые типы данных (еще плюс к ним массивы), то с точки зрения быстродействия JavaScript желательно создавать их в виде литералов, а не объектов.

Объекты вы также можете создавать самостоятельно с помощью литерала объекта или с помощью конструктора new Object():

В консоли вы увидите по сути очень похожие объекты, хоть они и были созданы разными способами:

object

Следует отметить, что в JavaScript практически все типы данных могут быть объектами:

  • Логические переменные (Boolean) могут быть объектами (если объявлены с помощью ключевого слова new)
  • Числа (Number) могут быть объектами (если объявлены с помощью ключевого слова new)
  • Строки  (String) могут быть объектами (если объявлены с помощью ключевого слова new );
  • Дата (экземпляры объекта Date) всегда являются объектами;
  • Экземпляры Math всегда являются объектами;
  • Регулярные выражения (RegExp, Regular expression) всегда являются объектами;
  • Массивы (Array) всегда являются объектами;
  • Функции (Function) - всегда являются объектами;
  • Экземпляры Object всегда являются объектами.

К примитивным типам данных относятся:

  • string
  • number
  • boolean
  • null
  • undefined
  • symbol

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

8. Тип данных Symbol

Symbol был добавлен в стандарте ES6 в качестве уникального и неизменяемого типа данных. Использование Symbol  - это чаще всего создание уникального идентификатора, к которому нельзя получить доступ. Переменные такого типа создаются без использования ключевого слова new:

Символы могут использоваться в качестве свойств (полей) объекта. Для доступа к ним нужно использовать метод Object.getOwnPropertySymbols():

Чаще всего символы используются в качестве итераторов для перебора составляющих сложных объектов, например, массивов. В массивах есть встроенный итератор, который позволяет перебирать значения элементов в циклах for или for...of.

У итераторов есть  метод next(), который позволяет переходить к следующему элементу и получать данные из него в виде объекта с полями value (значение) и done  со значением true | false , которое показывает, окончен ли перебор.

Symbol iterator

Оператор typeof

Для вывода типа переменной используют оператор typeof:

Этот оператор можно использовать в 2-х формах записи — со скобками и без:

Он может быть полезен, когда вы отлаживаете скрипты и не можете понять, в чем ошибка. А она может быть в неверном типе данных, особенно если дело касается операций сложения двух чисел. Дело в том, что большая часть информации, получаемая от пользователя, является строковой, а строки при сложении склеиваются (это называется красивым словом «Конкатенация»). В этом случае и пригодится оператор typeof. И способы преобразования типов данных. Но об этом — уже в другой статье.

Автор: Админ

2 комментария

  1. Понравился пример на фото с полочками. Спасибо!

  2. Прекрасная статья! Лаконично, доступно, наглядно. Запоминается само собой, без малейших усилий. Спасибо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *