Язык JS РЕГИСТРОЧУВСТВИТЕЛЬНЫЙ
Типы данных ДО 2015
5 примитывный и 1 ссылочный
Типы данных после 2015, после применения стандарта ES6
+1 примитивный тип данных: символ
- number. нет чисел разной размерности. float, int итд
var num1 = 34; var num2 = 5.2678; var num3 = 0x1F; NaN - not a number Infinity - при делении на ноль. -Infinity -0
- строка String
var str1 = “Hello”; var str2 = ‘Wor\’ld’; // нет разницы одинарные или двойные кавычки
- boolean — логический
var bool1 = true; var bool2 = false; var bool3 = 2===3; // через сравнение получаем тип ложь или истина
- null
var nothing = null; // тип значения отсутствует или оно не известно. невозможно определить тип: строка это или картинка // typeof null === ”object”;
это общепризнанный баг в языке JS. потому что если написать такую конструкцию это вернет true. Хотя фактически null — примитивное значение. Ответ прост: так исторически сложилось )
- Undefined — значение переменной не установлено. То есть коробочка для хранения как бы создана, но в нее ничего еще не положили. И подразумевается, что переменная будет проинициализирована в дальнейшем.
Например, если мы объявим переменную и не присвоим ей никакого значения, то это равносильно, как если бы мы присвоили переменной значение undefined.
var undef1; var undef2 = undefined; if(undef1 == undef2 === true) {}
- Ссылочный тип данных: Object.
Разница между примитивными и ссылочными типами данных, в том, что данные примитивных типов передаются по значению (или копируются). А ссылочных по ссылке.
var obj1 = { sayMyName: “SomeName” }; var obj2 = [1, 4, -12, 1.25]; var obj3 = function() { return 2+2; }; // typeof obj3 = “function” //////////////// a = { hello_to: “World” }; b = “Hello World”; a = b; //- здесь значение скопируется физически на диске в памяти b = a; // - физически в памяти будет храниться в 1 месте, но сслыка будет скопирована.
- ES6 тип данных: Symbol
var lastName = Symbov(); // задаем маркер, метку, к которой потом будем обращаться.
с помощью этой метки мы можем в дальнейшем обращаться к свойству объекта
var person = { firstName: “Mark”, [lastName]: “Shtern” }; person[“firstName”] === “Mark”; // обращаемся к свойству объекта обычным путем, через имя в кавычках person[lastName] === “Shtern”; // а здесь мы обращаемся без использования кавычек.