Язык 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”; // а здесь мы обращаемся без использования кавычек.