JS для начинающих. Урок 1.2: Переменные

Привет! Сегодня у нас очередной урок курса лекций «JavaScript для начинающих» и сегодня я расскажу вам о переменных в JavaScript.

Понятие переменной

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

Типы данных

Существуют типы переменных, которые определяют, какие значения может принимать переменная. Например, это только строковые (текстовые) значения, или целые числа, или дробные числа.

В JavaScript отсутствует жёсткая типизация данных, при которой тип переменной определяется при её объявлении. В js тип переменной определяется при присвоении ей значения. Это называется динамической типизацией. В переменную можно записать вначале строку, затем число, при этом она будет менять свой тип. Этого нельзя делать в языках программирования с жёсткой типизацией данных, таких как Java, C# и С++.

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

Идентификаторы

Идентификатор – это имя, по которому мы узнаём (идентифицируем) переменную или функцию. Первым символом идентификатора может быть буква, знак подчёркивания (_) или знак доллара ($). Все остальные символы могут быть буквой, цифрой, знаком подчёркивания или знаком доллара. Цифра не может быть первым символом идентификатора из-за того, что в этом случае интерпретатору сложно отличить его от числового литерала.

В качестве идентификаторов так же нельзя использовать зарезервированные и ключевые слова. Они приведены ниже.

break do if switch typeof case else in this var catch false instanceof throw void continue finally new true while default for null try with delete function return abstract double goto native static Boolean enum implements package super byte export import private synchronized char extends int protected throws class final interface public transient const float long short volatile debugger

Так же следует избегать использования в качестве идентификаторов следующих слов.

arguments encodeURI Infinity Object String Array Error isFinite parseFloat SyntaxError Boolean escape isNaN parseInt TypeError Date eval Math RangeError undefined decodeURI EvalError NaN ReferenceError unescape decodeURIcomponent Function number RegExp URIError

Если вы всё же используете одно из них в качестве названия переменной или функции, то интерпретатор не выдаст ошибку, но скрипт будет вести себя непредсказуемым и непонятным образом.

Допустимые идентификаторы: myName, _a, $variable_name, _str, my_site.
Некорректные идентификаторы: my name, if, 1a, true-coder.

Для именования функций и переменных в js часто используют так называемый camelStyle. Согласно этому стилю первая буква идентификатора маленькая а каждое новое слово пишется с большой буквы. Например: myName, mySite, myTelephonNumber, getSize и т.д.

Объявление переменной

Так как одна и та же переменная может содержать значения различных типов, то при её объявлении тип данных не указывается. Объявление переменной осуществляется при помощи ключевого слова var.

Например, объявим переменную а.

var a;


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

var a, b, c;


Часто объявление переменной совмещают с присвоением ей значения (инициализацией)

var a = 10;
var a = 1, b = 2, c = 3;


Можно объявить и сразу проинициализировать переменную и опустив ключевое слово var, но я настоятельно не рекомендую этого делать. Позже узнаете, почему это плохо.

Если переменная объявлена, но не инициализирована, то она будет иметь специальное значение undefined, относящееся к отдельному типу.

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

var mess = 'hello';
mess = 'goodbye';
mess = 100500;


Обратите внимание, что переменной mess присваиваются значения разных типов, что на практике говорит о том, что в js динамическая типизация данных.

Перейти к содержанию курса «Javascript для начинающих»

  • Эх… После php на js трудно будет! Все эти типы данных… )))