Общие сведения
number, string, boolean, null, undefined, object
function - разновидность объекта, но тоже считается типом данных.
Для целочисленных и дробных значений выделяется 8 байт памяти (усекается до 4-х при битовых операциях).
Строковый тип
.length - возвращает длину строки
.charAt(n) - возвращает строку, содержающую символ в позиции n (нумерация с 0),
пустая строка, если символ отсутствует..
str[n] - аналогично charAt(), но возвращает undefined, если строка отсутствует.
Строки не меняются, не редактируются, только заменяются на новые (переопределяются).
.toLowerCase(), .toUpperCase() - приведение к нижнему/верхнему регистру.
.substring(start [, end]) - возвращает подстроку с позиции start до,
но не включая end (до конца, если end не указан). Отрицательные значения второго аргумента приравниваются к 0.
.substr(start [, length]) - как и substring, но второй аргумент содержит не конечную
позицию, а количество символов.
.slice(start [, end]) - как и substring, но отрицательные значения второго аргумента
отсчитываются от конца строки.
.fromCharCode(code) - возвращает символ по коду code.
.charCodeAt(pos) - возвращает код символа на позиции pos. Отсчет позиции
начинается с нуля.
Числа
Помимо десятичной возможно использование шестнадцатиричной (0x23ab) и восьмеричной (003, 07) системах, а также в “научном формате” (23e3 = 23 000, 23e-3 = 0,023). .toString([n]) - преобразование в систему по основанию n (по умолчанию 10, от 2 до 36). В т.ч. и дробные.
Приведение к числу производится унарным плюсом. Преобразование строгое (не число = NaN)
+false = 0 +true = 1 +null = 0 +undefined = NaN +”” = 0
Мягкое преобразование - parseInt(), parseFloat(). Отсекает пробельные символы в начале, останавливается на первой ошибке. При невозможности получить число возвращает NaN.
parseInt(“12px”) = 12; parseInt(“1.2.3”) = 1.2; parseInt(“str15”) = NaN;
0/0 = Infinity + -Infinity = Infinity / Infinity = Infinity - Infinity = NaN
a/0 = Infinity * Infinity = Infinity + Infinity = Infinity + a = Infinity (а - число)
isNan(n) = true не только для n = NaN, но и для любых нечисел ({}, undefined, "foo"), которые становятся NaN в результате преобразования к числу.
function isReallyNaN(x) {
return x !== x;
}
NaN в соответствии со стандартом не равно само себе любая операция с ним также возвращает NaN.
isFinite(Infinity) = isFinite(-Infinity) = isFinite(NaN) = false, иначе true
Существует два нуля (по стандарту IEEE754) - положительный и отрицательный. Оба равны друг другу и одинаково выглядят в консоли. В редких случаях, когда важен знак нуля (важно с какой стороны к нему подобрались) можно использовать функцию Object.is.
var x = -10/Infinity; // -0
Object.is(x, 0); // > false
Object.is(x, -0); // > true
Этой же функцией можно проверять объекты на равенство NaN.
Округление
Math.floor() - вверх, Math.ceil() - вниз, Math.round() - до ближайшего целого.
Побитовые операции, не изменяющие число, аналогичны Math.round(). Например, ~~x или x ^ 0.
.toFixed([n])- округляет до n-го знака после запятой (от 0 - по умолчанию до 20), возвращает строку.
+(price1 + price2).toFixed(2)
Преобразование типов
При преобразовании в число null становится 0, а undefined - NaN.
true/false => 1/0
Строки преобразуются по алгоритму:
- Отрезать все пробелы
- Если остается пустая строка, то 0.
- Если строка не пустая, то считываем число с начала. Если числа нет (буквы, пробелы, отделяющие точку от числа), то NaN.
Численное преобразование происходит при сравнении разных типов. Явно его можно произвести вызвом функции Number или использованием унарного плюса (var a = +”22”;)
При преобразовании в строку - ‘null’,‘undefined’,`true’, `false’ соответственно.
Строковое преобразование происходит в функциях вывода (console.log(), alarm()). Явно его можно произвести функцией String() или бинарным плюсом, если один из аргументов этого оператора - строка.
При преобразовании к логическому значению false становятся только undefined, null, 0, NaN, “”. Все остальное - true. Логическое преобразование происходит при использовании логических операторов или в логическом контексте (if, while). Явное преобразование можно произвести функцией Boolean() или двойным отрицанием (!!a).
Комментариев нет :
Отправить комментарий