Методы работы с числами в JavaScript Представление чисел в JS: • десятичная запись: alert( 255 ); • шестнадцатиричная запись: alert( 0xFF ); // 255 в шестнадцатиричной системе • запись в «научном формате»: alert( 3e5 ); // 300000 или 3*10^5 alert( 3e-5 ); // 0.00003 или 3*10^(-5) Плюс и минус бесконечность : alert( 1 / 0 ); // Infinity alert( 12345 / 0 ); // Infinity Infinity — особенное численное значение, которое ведет себя в точности как математическая бесконечность. Бывает и минус бесконечность -Infinity: alert( -1 / 0 ); // -Infinity Метод isFinite(n) - преобразует аргумент к числу и возвращает true, если это не NaN/Infinity/-Infinity: alert( isFinite(1) ); // true alert( isFinite(Infinity) ); // false alert( isFinite(NaN) ); // false Явное преобразование унарным ‘+’: var s = "12.34"; alert( +s ); // 12.34 alert( +"12test" ); // NaN, т.к. строка не является полностью числом Примечание: • Пустая строка становится нулем alert( +"" ); // 0 •Пробельные символы игнорируются alert( +" \n34 \n" ); // 34 Методы parseInt(strVal) и parseFloat(strVal) – мягкое преобразование. Преобразует строку в число пока это возможно alert( parseInt('12px') ); // 12, ошибка на символе 'p' alert( parseFloat('12.3.4') ); // 12.3, ошибка на второй точке Методы возвращают NaN, если первый символ строки не является числом: alert( parseInt('a123') ); // NaN Проверка на число – метод isNaN(testValue) var i="abc"; if( isNaN (i)) alert( "is NaN " ); // is NaN else alert( "is Number" ); // is Number Примечание: • пустая строка и пробельные символы преобразуются к нулю • метод «считает» false, true и null числами Для выполнения математических действий над числами используются методы объекта Math. Некоторые из них: Math.abs(x) Возвращает абсолютное значение числа. Math.acos(x) Возвращает арккосинус числа Math.asin(x) Возвращает арксинус числа Math.asinh(x) Возвращает гиперболический арксинус числа Math.atan(x) Возвращает арктангенс числа Math.atanh(x) Возвращает гиперболический арктангенс числа Math.cbrt(x) Возвращает кубический корень числа Math.ceil(x) Возвращает наименьшее целое число, большее, либо равное указанному числу Math.log(x) Возвращает натуральный логарифм числа (loge, также известен как ln) Math.sqrt(x) Возвращает положительный квадратный корень числа Math.sin(x) Возвращает синус числа Math.tan(x) Возвращает тангенс числа И т.д. Примеры: Примечание: так как методы объекта Math статические, то их нельзя вызывать на созданном экземпляре объекта Math (т.к. Math не является конструктором) Модуль числа: alert (Math.abs('-1')); // 1, неявное преобразование строки к числу alert (Math.abs(-2)); // 2 Кубический корень: alert (Math.cbrt(8)); // 2 alert(Math.cbrt(-1)); // -1 Округление числа: alert(Math.ceil(.95)); // 1 alert(Math.ceil(4)); // 4 Арккосинус числа: alert(Math.acos(-2)); // NaN alert(Math.acos(-1)); // 3.141592653589793 Методы работы со строками в JavaScript Строки создаются при помощи двойных или одинарных кавычек: var text = "моя строка"; var anotherText = 'еще строка'; var str = "012345"; В JavaScript нет разницы между двойными и одинарными кавычками. Длина length var str = "My\n"; // 3 символа. Третий - перевод строки alert( str.length ); // 3 Доступ к символам Чтобы получить символ, используйте вызов charAt(позиция). Первый символ имеет позицию 0: var str = "JavaScript"; alert( str.charAt (0) ); // “J" Для доступа к строкам можно использовать операцию [], однако если строка пуста, то она возвращает undefined: alert( "".charAt(0) ); // пустая строка alert( "" [0] ); // undefined Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана — она такая навсегда Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например: var str = “string"; str = str[3] + str[4] + str[5]; alert( str ); // ing Смена регистра Методы toLowerCase() и toUpperCase() меняют регистр строки на нижний/верхний: alert( "Интерфейс".toUpperCase() ); // ИНТЕРФЕЙС alert( "Интерфейс" [0]. toLowerCase() ); // 'и' Поиск подстроки Для поиска подстроки есть метод indexOf(подстрока[, начальная_позиция]) var str = "Widget with id"; alert( str. indexOf("Widget") ); // 0, т.к. "Widget" найден прямо в начале //str alert( str.indexOf("id") ); // 1, т.к. "id" найден, начиная с позиции 1 alert( str.indexOf("widget") ); // -1, не найдено, так как поиск учитывает //регистр Взятие подстроки: substr, substring, slice Метод substring(start [, end]) возвращает подстроку с позиции start до, но не включая end. var str = "stringify"; alert(str. substring(0,1)); // "s", символы с позиции 0 по 1 не включая 1 Если аргумент end отсутствует, то идет до конца строки: var str = "stringify"; alert(str. substring(2)); // ringify, символы с позиции 2 до конца Метод substr(start [, length]). Первый аргумент имеет такой же смысл, как и в substring, а второй содержит не конечную позицию, а количество символов. var str = "stringify"; str = str. substr(2,4); // ring, со 2й позиции 4 символа alert(str); Метод slice(start [, end]). Возвращает часть строки от позиции start до, но не включая, позиции end. Смысл параметров — такой же как в substring. Различие между substring и slice — в том, как они работают с отрицательными и выходящими за границу строки аргументами В методе substring(start, end) отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки: alert( "testme". substring(-2) ); // "testme", -2 становится 0 Кроме того, если start > end, то аргументы меняются местами, т.е. возвращается участок строки между start и end: alert( "testme". substring(4, -1) ); // "test" // -1 становится 0 -> получили substring(4, 0) // 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test" В методе slice отрицательные значения отсчитываются от конца строки: alert( "testme". slice(-2) ); // "me", от 2 позиции с конца alert( "testme". slice(1, -1) ); // "estm", от 1 позиции до первой с конца