Язык JS  РЕГИСТРОЧУВСТВИТЕЛЬНЫЙ

 

Типы данных ДО 2015  

5 примитывный и 1 ссылочный

 

Типы данных после 2015, после применения стандарта ES6

 

+1 примитивный тип данных: символ

 

  1. number.   нет чисел разной размерности. float, int итд
var num1 = 34;
var num2 = 5.2678;
var num3 = 0x1F; 


NaN - not a number
Infinity - при делении на ноль. 
-Infinity
-0

 

  1. строка String 
var str1 = “Hello”;
var str2 = ‘Wor\’ld’;  // нет разницы одинарные или двойные кавычки

 

  1. boolean — логический 
var bool1 = true;
var bool2 = false;
var bool3 = 2===3;  // через сравнение получаем тип ложь или истина

 

  1. null 
var nothing = null;  // тип значения отсутствует или оно не известно. невозможно определить тип: строка это или картинка

// typeof null === ”object”; 

это общепризнанный баг в языке JS. потому что если написать такую конструкцию это вернет true. Хотя фактически null — примитивное значение. Ответ прост: так исторически сложилось )

 

  1. Undefined — значение переменной не установлено. То есть коробочка для хранения как бы создана, но в нее ничего еще не положили. И  подразумевается, что переменная будет проинициализирована в дальнейшем. 

Например, если мы объявим переменную и не присвоим ей никакого значения, то это равносильно, как если бы мы присвоили переменной значение undefined.

var undef1;
var undef2 = undefined;
if(undef1 == undef2 === true) {}

 

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