Найти тему

Типизация переменных JavaScript

Пожалуй, JavaScript - это самый нетипизированный язык среди всех нетипизированнных.

Нетипизированный (untyped) язык - это язык, который:

  • Не требует указывать тип данных при объявлении
  • Позволяет любой переменной присваивать любые значения
  • Позволяет использовать в выражении переменные разных типов без явных преобразований

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

Ну а JavaScript лишён всех этих предрассудков ))) Здесь совершенно спокойно можно сделать, например, так:

var x = 10;
var y = 'Три';
var z = x + y;

Что при этом получится - это другой вопрос. Но это не является синтаксической ошибкой.

Вы также можете сделать что-то вроде этого:

x = 10;
x = 'Привет';

и это также не будет ошибкой, в отличие от строго типизированных языков, таких как Паскаль, С/С++ и т.п.

Отсутствие строгой типизации в JavaScript приводит к тому, что в случае необходимости значения одного типа неявно и автоматически преобразуются в другой. То есть в первом примере сначала х преобразуется в строку (потому что преобразовать у в число не получается), затем две строки складываются и результат помещается в z. В итоге z будет содержать:

10Три

А переменная z будет строкового типа (ну да, типы данных в JavaScript всё-таки есть). В этом легко убедиться:

alert(typeof z);

это выражение выведет string.

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

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