Содержание
JavaScript
JS Array concat() constructor copyWithin() entries() every() fill() filter() find() findIndex() forEach() from() includes() indexOf() isArray() join() keys() length lastIndexOf() map() pop() prototype push() reduce() reduceRight() reverse() shift() slice() some() sort() splice() toString() unshift() valueOf()
JS Boolean constructor prototype toString() valueOf()
JS Classes constructor() extends static super
JS Date constructor getDate() getDay() getFullYear() getHours() getMilliseconds() getMinutes() getMonth() getSeconds() getTime() getTimezoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() now() parse() prototype setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() setUTCDate() setUTCFullYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() toDateString() toISOString() toJSON() toLocaleDateString() toLocaleTimeString() toLocaleString() toString() toTimeString() toUTCString() UTC() valueOf()
JS Error name message
JS Global decodeURI() decodeURIComponent() encodeURI() encodeURIComponent() escape() eval() Infinity isFinite() isNaN() NaN Number() parseFloat() parseInt() String() undefined unescape()
JS JSON parse() stringify()
JS Math abs() acos() acosh() asin() asinh() atan() atan2() atanh() cbrt() ceil() cos() cosh() E exp() floor() LN2 LN10 log() LOG2E LOG10E max() min() PI pow() random() round() sin() sqrt() SQRT1_2 SQRT2 tan() tanh() trunc()
JS Number constructor isFinite() isInteger() isNaN() isSafeInteger() MAX_VALUE MIN_VALUE NEGATIVE_INFINITY NaN POSITIVE_INFINITY prototype toExponential() toFixed() toLocaleString() toPrecision() toString() valueOf()
JS OperatorsJS RegExp constructor compile() exec() g global i ignoreCase lastIndex m multiline n+ n* n? n{X} n{X,Y} n{X,} n$ ^n ?=n ?!n source test() toString() (x|y) . \w \W \d \D \s \S \b \B \0 \n \f \r \t \v \xxx \xdd \uxxxx
JS Statements break class continue debugger do…while for for…in for…of function if…else return switch throw try…catch var while
JS String charAt() charCodeAt() concat() constructor endsWith() fromCharCode() includes() indexOf() lastIndexOf() length localeCompare() match() prototype repeat() replace() search() slice() split() startsWith() substr() substring() toLocaleLowerCase() toLocaleUpperCase() toLowerCase() toString() toUpperCase() trim() valueOf()
Преобразование значений в строки
Чтобы явно преобразовать значение в строку, вызовите метод String() или n.toString().
Попробуйте преобразовать логическое значение true в строку с помощью String().
Это вернет строковый литерал «true».
Также можно попробовать передать функции число:
Она вернет строковый литерал:
Теперь попробуйте использовать String() с переменной. Присвойте числовое значение переменной odyssey и используйте оператор typeof, чтобы проверить тип.
На данный момент переменной odyssey присвоено числовое значение 2001. Оператор typeof подтверждает, что значение является числом.
Теперь присвойте переменной odyssey ее эквивалент внутри функции String(), а затем используйте typeof, чтобы убедиться, что значение переменной успешно преобразовано из числа в строку.
Как видите, теперь переменная odyssey содержит строку.
Функция n.toString() работает аналогичным образом. Замените n переменной.
Переменная blows будет содержать строку.
Вместо переменной можно поместить значение в круглых скобках:
String() и n.toString() явно преобразовывают логические и числовые значения в строки.
Breaking Long Code Lines
For best readability, programmers often like to avoid code lines longer than 80 characters.
If a JavaScript statement does not fit on one line, the best place to break it is after an operator:
document.getElementById(«demo»).innerHTML =»Hello Dolly!»;
You can also break up a code line within a text string with a single backslash:
document.getElementById(«demo»).innerHTML = «Hello \Dolly!»;
The method is not the preferred method. It might not have universal support.Some browsers do not allow spaces behind the character.
A safer way to break up a string, is to use string addition:
document.getElementById(«demo»).innerHTML = «Hello » + «Dolly!»;
You cannot break up a code line with a backslash:
The slice() Method
extracts a part of a string and returns the extracted part in a new string.
The method takes 2 parameters: the start position, and the end position (end not included).
This example slices out a portion of a string from position 7 to position 12 (13-1):
var str = «Apple, Banana, Kiwi»; var res = str.slice(7, 13);
The result of res will be:
Remember: JavaScript counts positions from zero. First position is 0.
If a parameter is negative, the position is counted from the end of the string.
This example slices out a portion of a string from position -12 to position -6:
var str = «Apple, Banana, Kiwi»; var res = str.slice(-12, -6);
The result of res will be:
If you omit the second parameter, the method will slice out the rest of the string:
var res = str.slice(7);
or, counting from the end:
Численное преобразование
Численное преобразование происходит в математических функциях и выражениях, а также при сравнении данных различных типов (кроме сравнений , ).
Для преобразования к числу в явном виде можно вызвать , либо, что короче, поставить перед выражением унарный плюс :
Значение | Преобразуется в… |
---|---|
Строка | Пробельные символы по краям обрезаются.Далее, если остаётся пустая строка, то , иначе из непустой строки «считывается» число, при ошибке результат . |
Например:
Ещё примеры:
-
Логические значения:
-
Сравнение разных типов – значит численное преобразование:
При этом строка преобразуется к числу, как указано выше: начальные и конечные пробелы обрезаются, получается строка , которая равна .
-
С логическими значениями:
Здесь сравнение снова приводит обе части к числу. В первой строке слева и справа получается , во второй .
Посмотрим на поведение специальных значений более внимательно.
Интуитивно, значения ассоциируются с нулём, но при преобразованиях ведут себя иначе.
Специальные значения преобразуются к числу так:
Значение | Преобразуется в… |
---|---|
Это преобразование осуществляется при арифметических операциях и сравнениях , но не при проверке равенства . Алгоритм проверки равенства для этих значений в спецификации прописан отдельно (пункт ). В нём считается, что и равны между собой, но эти значения не равны никакому другому значению.
Это ведёт к забавным последствиям.
Например, не подчиняется законам математики – он «больше либо равен нулю»: , но не больше и не равен:
Значение вообще «несравнимо»:
Для более очевидной работы кода и во избежание ошибок лучше не давать специальным значениям участвовать в сравнениях .
Используйте в таких случаях переменные-числа или приводите к числу явно.
JS Уроки
JS HOMEJS IntroductionJS Where ToJS OutputJS StatementsJS SyntaxJS CommentsJS VariablesJS OperatorsJS ArithmeticJS AssignmentJS Data TypesJS FunctionsJS ObjectsJS ScopeJS EventsJS StringsJS String MethodsJS NumbersJS Number MethodsJS ArraysJS Array MethodsJS Array SortJS Array IterationJS DatesJS Date FormatsJS Date Get MethodsJS Date Set MethodsJS MathJS RandomJS BooleansJS ComparisonsJS ConditionsJS SwitchJS Loop ForJS Loop WhileJS BreakJS Type ConversionJS BitwiseJS RegExpJS ErrorsJS DebuggingJS HoistingJS Strict ModeJS this KeywordJS Style GuideJS Best PracticesJS MistakesJS PerformanceJS Reserved WordsJS VersionsJS Version ES5JS Version ES6JS JSON
Special characters
It is still possible to create multiline strings with single and double quotes by using a so-called “newline character”, written as , which denotes a line break:
For example, these two lines are equal, just written differently:
There are other, less common “special” characters.
Here’s the full list:
Character | Description |
---|---|
New line | |
Carriage return: not used alone. Windows text files use a combination of two characters to represent a line break. | |
, | Quotes |
Backslash | |
Tab | |
, , | Backspace, Form Feed, Vertical Tab – kept for compatibility, not used nowadays. |
Unicode character with the given hexadecimal unicode , e.g. is the same as . | |
A unicode symbol with the hex code in UTF-16 encoding, for instance – is a unicode for the copyright symbol . It must be exactly 4 hex digits. | |
(1 to 6 hex characters) | A unicode symbol with the given UTF-32 encoding. Some rare characters are encoded with two unicode symbols, taking 4 bytes. This way we can insert long codes. |
Examples with unicode:
All special characters start with a backslash character . It is also called an “escape character”.
We might also use it if we wanted to insert a quote into the string.
For instance:
As you can see, we have to prepend the inner quote by the backslash , because otherwise it would indicate the string end.
Of course, only to the quotes that are the same as the enclosing ones need to be escaped. So, as a more elegant solution, we could switch to double quotes or backticks instead:
Note that the backslash serves for the correct reading of the string by JavaScript, then disappears. The in-memory string has no . You can clearly see that in from the examples above.
But what if we need to show an actual backslash within the string?
That’s possible, but we need to double it like :
Summary
- There are 3 types of quotes. Backticks allow a string to span multiple lines and embed expressions .
- Strings in JavaScript are encoded using UTF-16.
- We can use special characters like and insert letters by their unicode using .
- To get a character, use: .
- To get a substring, use: or .
- To lowercase/uppercase a string, use: .
- To look for a substring, use: , or for simple checks.
- To compare strings according to the language, use: , otherwise they are compared by character codes.
There are several other helpful methods in strings:
- – removes (“trims”) spaces from the beginning and end of the string.
- – repeats the string times.
- …and more to be found in the manual.
Strings also have methods for doing search/replace with regular expressions. But that’s big topic, so it’s explained in a separate tutorial section Regular expressions.
JavaScript
JS Array concat() constructor copyWithin() entries() every() fill() filter() find() findIndex() forEach() from() includes() indexOf() isArray() join() keys() length lastIndexOf() map() pop() prototype push() reduce() reduceRight() reverse() shift() slice() some() sort() splice() toString() unshift() valueOf()
JS Boolean constructor prototype toString() valueOf()
JS Classes constructor() extends static super
JS Date constructor getDate() getDay() getFullYear() getHours() getMilliseconds() getMinutes() getMonth() getSeconds() getTime() getTimezoneOffset() getUTCDate() getUTCDay() getUTCFullYear() getUTCHours() getUTCMilliseconds() getUTCMinutes() getUTCMonth() getUTCSeconds() now() parse() prototype setDate() setFullYear() setHours() setMilliseconds() setMinutes() setMonth() setSeconds() setTime() setUTCDate() setUTCFullYear() setUTCHours() setUTCMilliseconds() setUTCMinutes() setUTCMonth() setUTCSeconds() toDateString() toISOString() toJSON() toLocaleDateString() toLocaleTimeString() toLocaleString() toString() toTimeString() toUTCString() UTC() valueOf()
JS Error name message
JS Global decodeURI() decodeURIComponent() encodeURI() encodeURIComponent() escape() eval() Infinity isFinite() isNaN() NaN Number() parseFloat() parseInt() String() undefined unescape()
JS JSON parse() stringify()
JS Math abs() acos() acosh() asin() asinh() atan() atan2() atanh() cbrt() ceil() cos() cosh() E exp() floor() LN2 LN10 log() LOG2E LOG10E max() min() PI pow() random() round() sin() sqrt() SQRT1_2 SQRT2 tan() tanh() trunc()
JS Number constructor isFinite() isInteger() isNaN() isSafeInteger() MAX_VALUE MIN_VALUE NEGATIVE_INFINITY NaN POSITIVE_INFINITY prototype toExponential() toFixed() toLocaleString() toPrecision() toString() valueOf()
JS OperatorsJS RegExp constructor compile() exec() g global i ignoreCase lastIndex m multiline n+ n* n? n{X} n{X,Y} n{X,} n$ ^n ?=n ?!n source test() toString() (x|y) . \w \W \d \D \s \S \b \B \0 \n \f \r \t \v \xxx \xdd \uxxxx
JS Statements break class continue debugger do…while for for…in for…of function if…else return switch throw try…catch var while
JS String charAt() charCodeAt() concat() constructor endsWith() fromCharCode() includes() indexOf() lastIndexOf() length localeCompare() match() prototype repeat() replace() search() slice() split() startsWith() substr() substring() toLocaleLowerCase() toLocaleUpperCase() toLowerCase() toString() toUpperCase() trim() valueOf()
Типы данных
Последнее обновление: 26.03.2018
Все используемые данные в javascript имеют определенный тип. В JavaScript имеется пять примитивных типов данных:
String: представляет строку
Number: представляет числовое значение
Boolean: представляет логическое значение или
undefined: указывает, что значение не установлено
null: указывает на неопределенное значение
Все данные, которые не попадают под вышеперечисленные пять типов, относятся к типу object
Числовые данные
Числа в JavaScript могут иметь две формы:
Целые числа, например, 35. Мы можем использовать как положительные, так и отрицательные числа. Диапазон используемых чисел: от -253 до 253
Дробные числа (числа с плавающей точкой), например, 3.5575. Опять же можно использовать как положительные, так и отрицательные числа. Для чисел с плавающей точкой используется тот же диапазон: от -253 до 253
Например:
var x = 45; var y = 23.897;
В качестве разделителя между целой и дробной частями, как и в других языках программирования, используется точка.
Строки
Тип представляет строки, то есть такие данные, которые заключены в кавычки. Например, . Причем мы можем использовать как двойные, так и одинарные кавычки: и . Единственно ограничение: тип закрывающей кавычки должен быть тот же, что и тип открывающей, то есть либо обе двойные, либо обе одинарные.
Если внутри строки встречаются кавычки, то мы их должны экранировать слешем. Например, пусть у нас есть текст . Теперь экранируем кавычки:
var companyName = "Бюро \"Рога и копыта\"";
Также мы можем внутри стоки использовать другой тип кавычек:
var companyName1 = "Бюро 'Рога и копыта'"; var companyName2 = 'Бюро "Рога и копыта"';
Тип Boolean
Тип Boolean представляет булевые или логические значения true и false (то есть да или нет):
var isAlive = true; var isDead = false;
null и undefined
Нередко возникает путаница между null и undefined. Итак, когда мы только определяем переменную без присвоения ей начального значения, она представляет тип undefined:
var isAlive; console.log(isAlive); // выведет undefined
Присвоение значение null означает, что переменная имеет некоторое неопределенное значение (не число, не строка, не логическое значение), но все-таки имеет значение (undefined означает, что переменная не имеет значения):
var isAlive; console.log(isAlive); // undefined isAlive = null; console.log(isAlive); // null isAlive = undefined; // снова установим тип undefined console.log(isAlive); // undefined
object
Тип представляет сложный объект. Простейшее определение объекта представляют фигурные скобки:
var user = {};
Объект может иметь различные свойства и методы:
var user = {name: "Tom", age:24}; console.log(user.name);
В данном случае объект называется user, и он имеет два свойства: name и age. Это краткое описание объектов, более подробное описание приводится в соответствующей главе.
Слабая типизация
JavaScript является языком со слабой типизацией. Это значит, что переменные могут динамически менять тип. Например:
var xNumber; // тип undefined console.log(xNumber); xNumber = 45; // тип number console.log(xNumber); xNumber = "45"; // тип string console.log(xNumber);
Несмотря на то, что во втором и третьем случае консоль выведет нам число 45, но во втором случае переменная xNumber будет представлять число, а в третьем случае — строку.
Это важный момент, который надо учитывать и от которого зависит поведение переменной в программе:
var xNumber = 45; // тип number var yNumber = xNumber + 5; console.log(yNumber); // 50 xNumber = "45"; // тип string var zNumber = xNumber + 5 console.log(zNumber); // 455
Выше в обоих случая к переменной xNumber применяется операция сложения (+). Но в первом случае xNumber представляет число, поэтому результатом операции будет число 50.
Во втором случае xNumber представляет строку. Но операция сложения между строкой и числом 5 невозможна. Поэтому число 5 будет преобразовываться к строке, и будет происходить операция объединения строк. И результатом выражения будет стока «455».
Оператор typeof
С помощью оператора typeof можно получить тип переменной:
var name = "Tom"; console.log(typeof name); // string var income = 45.8; console.log(typeof income); // number var isEnabled = true; console.log(typeof isEnabled); // boolean var undefVariable; console.log(typeof undefVariable); // undefined
НазадВперед
parseInt и parseFloat
Данные методы позволяют выделить число из строки, даже если в строке имеются другие не числовые символы. Например, при работе с CSS часто встречаются такие выражения: «12pt», «100%», «340px» и прочее. Если мы попытаемся получить значения с помощью уже знакомых нам подходов:
let arg1 = "12pt"; let arg2 = "100%"; let arg3 = "340px"; console.log( Number(arg1) ); console.log( +arg2 ); console.log( +arg3 );
То всюду получим значение NaN. Но, функии parseInt и parseFloat справляются с такими задачами. Они преобразовывают строку в число до тех пор, пока либо не дойдут до конца, либо не встретится ошибка преобразования. В данном случае, получим всюду правильные числовые значения:
console.log( parseInt(arg1) ); console.log( parseInt(arg2) ); console.log( parseInt(arg3) );
Если же в строке предполагается вещественное число, то применяется вторая функция:
console.log( parseFloat("12.5pt") ); console.log( parseFloat(" 90.5% ") ); console.log( parseFloat("+30.5px") );
Функция parseInt имеет второй необязательный аргумент, в котором можно указать систему, в которой представлено число, например:
console.log( parseInt('0xff', 16) ); // 255 console.log( parseInt('aa', 16) ); // 170, можно и без 0x console.log( parseInt('11011', 2) ); // 27
Неявное преобразование
Язык программирования JavaScript очень хорошо справляется с обработкой неожиданных значений. JavaScript не отклоняет неожиданные значения, а пытается преобразовать. Это неявное преобразование также называется приведением типов (type coercion).
Отдельные методы автоматически преобразовывают значения, чтобы использовать их. Метод alert() принимает строку в качестве своего параметра, а другие типы автоматически преобразует в строки. Таким образом, можно передать этому методу числовое значение:
Если запустить эту строку, браузер вернет всплывающее окно со значением 8.5, которое будет уже преобразовано в строку.
Используя строки, состоящие из чисел, вместе с математическими операторами, вы обнаружите, что JavaScript может обрабатывать значения, неявно преобразовывая строки в числа:
Но не все операторы работают предсказуемо. Особенно это касается оператора +: он выполняет сложение чисел и конкатенацию строк.
Поскольку оператор + имеет много предназначений, в этом примере он воспринимает значения 2 и 3 как строковые, несмотря на то, что они выражаются числовыми строками. Потому он объединяет строки «2» и «3» и получает 23, а не складывает 2 и 3 и получает 5.
Подобная неоднозначность имеет место в коде и иногда вызывает неожиданные результаты, потому лучше по возможности явно преобразовывать типы данных. Это поможет в поддержке кода и обработке ошибок.
С этим читают