суббота, 27 мая 2017 г.

Sorax. 9. Преобразование типов

// В JS есть автоматическая конвертация типов.


console.log(5 + "5"); // 55. Если один из операндов строка, то мы преобразуем в строку второй операнд
console.log(typeof(5 + "5")); // string
console.log("5" * "4"); // умножение преобразует любые значения в числа
console.log(typeof("5" * "4")); // number
console.log("5" * "hi"); // NaN Если выполнить такое преобразование невозможно
console.log(typeof("5" * "hi")); // number

// Автоматическое преобразование происходит, когда мы используем сравнение не равенство.
console.log("5" == 5); // true
console.log("0" == false); // true
console.log(Boolean("0")); // true

console.log(0 == false); // true
console.log("5" == true); // false
console.log("" == false); // true
console.log(null == false); // false
console.log(null == true); // false
console.log(undefined == false); // false
console.log(undefined == true); // false
console.log(undefined == null); // true

// Возможны и явные преобразования
console.log(Number("555")); // Number переводит данные в числовой тип
console.log(typeof(Number("555"))); // number

// String переводит любое значение в строковый тип
console.log(String(4433));
console.log(typeof(String(4433))); // string

// Конструктор Boolean используется для перевода в булев тип.
console.log(Boolean(1)); // true

// Для преобразования числа в логический тип можно использовать такую запись.
console.log(!!5); // true
console.log(!!0); // false

// Быстро преобразовать значение в строку можно таким образом:
console.log(typeof(345 + "")); // string

// Для преобразования значения в число можно использовать оператор +
console.log(+"454");
console.log(typeof(+"454")); // number

// Преобразовть число в строку можно методом toString()
var number = 22;
console.log(number.toString()); // 22
console.log(typeof number.toString()); // string

number = 45;
// в качестве аргумента мы можем передать систему счисления, в которой мы хотим вывести исходное число
console.log(number.toString(3)); // 1200

number = 5;
console.log(number.toString(2)); // 101

// Этот метод также есть у объекта boolean
console.log(false.toString()); // false
console.log(typeof false.toString()); // string

// ФУНКЦИИ ДЛЯ ПРЕОБРАЗОВАНИЯ ЧИСЛО В СТРОКУ
console.log(parseInt("45 px")); // 45 любые символы игнорирются
console.log(parseInt("45 px", 10)); // может принимать вторым параметом систему счисления

console.log(parseFloat("12.45 em")); // 12.45 парсит вещественные числа


// Какие значения можно получть в результате различных преобразований
console.log(String(Infinity)); // Infinity
console.log(typeof String(Infinity)); // string

console.log(String(NaN)); // NaN
console.log(typeof String(NaN)); // string

// Пустая строка при преобразовании в число становится 0
console.log(+""); // 0

// Любые значения, кроме этих при преобразовании в логичский тип вернут истину
console.log(!!""); // false
console.log(!!NaN); // false
console.log(!!0); // false
console.log(!!null); // false
console.log(!!undefined); // false

console.log(!!"hi"); // true

console.log(+"    4"); // 4 пробелы до числа игнорируются
console.log(+"    4 g"); // NaN. Здеь нужно использовать parseInt или parseFloat
console.log(parseInt("4 px")); // 4

// Булевы значения также можно преобразовать в числа
console.log(+true); // 1
console.log(+false); // 0

// ПРЕОБРАЗОВАНИЕ В ОБЪЕКТЫ
var n = 5;
console.log(n.value); // undefined

n = "hello";
console.log(n.value); // undefined

// n = null;
// console.log(n.value); // TypeError: n is null

// Лучше не использовать == Рекомендуется использовать ===

Комментариев нет:

Отправить комментарий