Тип данных: Множество значений и операций на этих значениях; Определенный тип данных хранимый в ячейках памяти компьютера
JavaScript слабо типизированый язык
var
, let
или const
var count = 5; // переменая хранит целочисленный тип
count = 'привет'; // теперь хрнит строку
var name = 'Курс JavaScript'; // переменная хранит строку
let mark = 5.25 // переменная хранит число с плавающей точкой
mark = true; // тперь хранит булево значение
const MAX_COUNT = 250; // константа хранит число
MAX_COUNT = 0; // ошибка переназначения значения константы
Переменная это: Поименованная область в памяти, которая может быть изменеа в процессе выполнения программы
Переменные позволяют:
let counter = 5;
Number
let value = 5;
value = 3.14159;
value = new Number(100); // Number { 100 }
value = value + 1; // 101
let biggestNum = Number.MAX_VALUE;
floating-point
в integer
числаlet valueDouble = 8.75;
let valueInt = valueDouble | 0; // 8
integer
с помощью округленияlet valueDouble = 8.75;
let roundedInt = (valueDouble + 0.5) | 0; // 9
string
в integer
let str = '1234';
let i = str | 0 + 1; // 1235
In [ ]:
'use strict';
var studentsCount = 5;
console.log('studentsCount is: ' + studentsCount);
In [ ]:
var maxInteger = 9007199254740991;
console.log('max precise integer is: ' + maxInteger);
In [ ]:
var minInteger = -9007199254740991;
console.log('min precise integer is: ' + minInteger);
In [ ]:
var greaterThanMax = maxInteger + 1;
console.log('is maxInteger + 1 possible? ' + greaterThanMax);
In [ ]:
var maxIntMult33 = maxInteger * 33;
console.log('maxInteger * 33 is: ' + maxIntMult33);
// Потерянная точность. Корректное значение 297237575406452736
In [ ]:
var PI = Math.PI; // 3.141592653589793
console.log('PI = ' + PI);
In [ ]:
var minValue = Number.MIN_VALUE;
console.log('Number.MIN_VALUE = ' + minValue);
In [ ]:
var maxValue = Number.MAX_VALUE;
console.log('Number.MAX_VALUE = ' + maxValue);
In [ ]:
var div0 = PI / 0; // Infinity
console.log('PI / 0 = ' + div0);
In [ ]:
var divMinus0 = -PI / 0; // -Infinity
console.log('-PI / 0 = ' + divMinus0);
In [ ]:
var unknown = div0 / divMinus0; // NaN - не число
console.log('Infinity / -Infinity = ' + unknown);
In [ ]:
var eps = Number.EPSILON;
// Свойство Number.EPSILON представляет собой разницу между единицей и
//наименьшим значением, большим единицы, которое может быть представлено типом Number
console.log('Number.EPSILON = ' + eps);
ненормальность чисел с плавающей точкой
==
и
===)
In [ ]:
console.log('');
var a = 0.1,
b = 0.2,
sum = 0.3,
equal = (a + b == sum); // false
console.log('a = ' + a);
console.log('b = ' + b);
console.log('a+b = ' + (a + b));
console.log('sum = ' + sum);
console.log('sum == a+b? is ' + equal);
In [ ]:
var a = 1;
var b = 2;
var greaterAB = (a > b);
console.log(`1 > 2 ? ${greaterAB}`); // false
var equalA1 = (a === 1);
console.log(`1 == 1 ? ${equalA1}`); // true
console.log(true, false);
In [ ]:
// Различные кавычки могут быть применены для инициализации переменных - двойная, одинарная и обратная
var firstName = 'Иван',
middleName = `Федорович`,
lastName = "Иванов";
console.log("Привет, " + firstName + "!");
var fullName = lastName + ' ' + firstName + ' ' + middleName;
console.log('Ваше полное имя ' + fullName); // create a string using concatenation
console.log(`Ваше полное имя ${fullName}`); // create a string using string interpolation
console.log(`Сумма 123, 456 и 879 ${123 + 456 + 879}`);
var asSalamuAlaykum = 'السلام عليكم';
console.log(asSalamuAlaykum);
var кирилица = 'Това е на кирилица!';
console.log(кирилица);
var leafJapanese = '葉'; // Pronounced as 'ha'
console.log(leafJapanese);
In [ ]:
var fractionalNumber = 8.75;
var truncated = fractionalNumber | 0,
truncated2 = Math.trunc(fractionalNumber);
console.log('Дробное число = ' + fractionalNumber);
console.log('Разделенное с помощью | = ' + truncated);
console.log('Разделенное с помощью Math.trunc = ' + truncated2);
fractionalNumber = 8.75;
var roundedInt = (fractionalNumber + 0.5) | 0;
var rounderInt2 = Math.round(fractionalNumber);
console.log('Дробное число = ' + fractionalNumber);
console.log('округленное с помощью | = ' + roundedInt);
console.log('округленное с помощью Math.round = ' + rounderInt2);
In [ ]:
var numAsString = '1234';
console.log(parseInt(numAsString) + 1);
console.log(parseFloat(numAsString) + 1);
console.log(+numAsString + 1);
console.log(numAsString * 1 + 1);
console.log((numAsString | 0) + 1);
console.log(Number(numAsString) + 1)
In [ ]:
var invalidNumString = '435javascript';
console.log(parseInt(invalidNumString) + 1); //будет вычеслено как - 435
console.log(+invalidNumString); // NaN
console.log(Number(invalidNumString)); // NaN
In [ ]:
var fractionString = '3.65';
console.log(parseFloat(fractionString) + 1);
console.log(Number(fractionString) + 1);
console.log(+fractionString + 1);
In [ ]:
var x = 5;
console.log('x = ' + x + ', typeof(x) = ' + typeof(x));
x = 3.14159;
console.log('x = ' + x + ', typeof(x) = ' + typeof(x));
x = undefined;
console.log('x = ' + x + ', typeof(x) = ' + typeof(x));
x = null;
console.log(`x = ${x}; typeof x = ${typeof x}`);
x = 'hello';
console.log(`x = ${x}; typeof x = ${typeof x}`);
x = new Number(5);
console.log(`x = ${x}; typeof x = ${typeof x}`);
Когда мы декларируем переменную мы
<var | let | const> <identifier> [= <initialization>];
let emptyVariable;
var height = 200;
let width = 300;
const depth = 250;
0
-9
]_
'$
'camelCase
Идентификатор может быть описательными именем, рекомендуется применять латинскую кодировку, JavaScript регистрозависимый язык
=
const
не могут быть переопределены дргим значениемlet firstValue = 5;
let secondValue;
let thirdValue;
// Используем уже декларированную переменную:
secondValue = firstValue;
// Каскадное присваивание
thirdValue = firstValue = 3; // Avoid this!
undefined
let heightInMeters = 1.74;
let greeting = 'Hello World!';
let message = greeting;
const parsedNumber = parseInt('1239') + 1;
var
, let
или const
var
- время жизни переменной определено в пространстве текущей функции или глобальном пространствеlet
- время жизни переменной в текущем пространствеconst
- такое же как let
, но не может быть переопределеноlet a = 5; // a в локальной области видимости
a = 'блаблабла'; // так же упонимается здесь
a = undefined;
a = 5; // то же что и window.a
In [ ]:
// Не рекомендуется но не приведет к ошибке
var New = 2;
var _2Pac;
var greeting = "Hello";
var n = 100;
//const numberOfClients = 100;
var numberOfPrivateClientOfTheFirm = 100;
// Вызовет ошибку
// numberOfClients = 200; // не может быть использовано для переменной типа const
// numberOfClients += 10; // не может быть использовано для переменной типа const
imGlobalVariable = 'Such global, much famous'; // глобальные переменые вызывают ошибку при использовании 'use strict'
// let 2Pac = '2Pac'; // invalid identifier
In [ ]: