recursal/MDN huggingface dataset:
escape()
========

**Устарело:** Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.

Устаревший метод **`escape()`** возвращает новую строку, в которой определённые символы заменены шестнадцатеричной управляющей последовательностью. Используйте методы `encodeURI` или `encodeURIComponent` вместо него.

Синтаксис
---------
```

escape(str)
```

### Параметры

`str`

Строка для кодирования.

Описание
--------

Функция `escape()` является свойством *глобального объекта*, т.е. относится к глобальным функциям. Эта функция кодирует специальные символы, за исключением: `@*_+-./`

The hexadecimal form for characters, whose code unit value is 0xFF or less, is a two-digit escape sequence: %xx. For characters with a greater code unit, the four-digit format %**u**xxxx is used.

Примеры
-------


```js
escape("abc123"); // "abc123"
escape("текст"); // "%u0442%u0435%u043A%u0441%u0442"
escape("ć"); // "%u0107"

/\* специальные символы \*/
escape("@\*\_+-./"); // "@\*\_+-./"
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-escape-string |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `encodeURI`
* `encodeURIComponent`
decodeURI()
===========

Метод **`decodeURI()`** декодирует унифицированный идентификатор ресурса (URI), созданный при помощи метода `encodeURI` или другой подобной процедуры.

Интерактивный пример
--------------------

Синтаксис
---------
```

decodeURI(encodedURI)
```

### Параметры

`encodedURI`

Полный закодированный унифицированный идентификатор ресурса.

### Возвращаемое значение

Новая строка, представляющая собой незакодированную версию данного унифицированного идентификатора ресурса.

### Exceptions

Throws an `URIError` ("malformed URI sequence") exception when `encodedURI` contains invalid character sequences.

Описание
--------

Заменяет каждую управляющую последовательность в закодированном URI соответствующим символом. Не декодирует последовательности, которые невозможно сформировать с помощью `encodeURI`. Символ "#" декодированию не подвергается.

Примеры
-------

### Декодирование кириллического URL


```js
decodeURI(
  "https://developer.mozilla.org/ru/docs/JavaScript\_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B",
);
// "https://developer.mozilla.org/ru/docs/JavaScript\_шеллы"
```

### Catching errors
```

try {
  var a = decodeURI('%E0%A4%A');
} catch(e) {
  console.error(e);
}

// URIError: malformed URI sequence
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-decodeuri-encodeduri |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `decodeURIComponent`
* `encodeURI`
* `encodeURIComponent`
JSON.parse()
============

Сводка
------

Метод **`JSON.parse()`** разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения.

Синтаксис
---------
```

JSON.parse(text[, reviver])
```

### Параметры

`text`

Разбираемая строка JSON. Смотрите документацию по объекту `JSON` для описания синтаксиса JSON.

`reviver` Необязательный

Если параметр является функцией, определяет преобразование полученного в процессе разбора значения, прежде, чем оно будет возвращено вызывающей стороне.

### Возвращаемое значение

Возвращает объект `Object`, соответствующий переданной строке JSON `text`.

### Выбрасываемые исключения

Выбрасывает исключение `SyntaxError`, если разбираемая строка не является правильным JSON.

Примеры
-------

### Пример: использование метода `JSON.parse()`


```js
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
```

### Пример: использование параметра `reviver`

Если определён параметр `reviver`, значение, вычисляемое при разборе строки, будет *преобразовано* перед его возвратом. В частности, вычисленное значение и все его свойства (начиная с самых вложенных свойств и кончая самим значением), каждое проходят через функцию `reviver`, которая вызывается с контекстом `this`, содержащим объект в виде обрабатываемого свойства, и с аргументами: именем свойства в виде строки и значением свойства. Если функция `reviver` вернёт `undefined` (либо вообще не вернёт никакого значения, например, если выполнение достигнет конца функции), свойство будет удалено из объекта. В противном случае свойство будет переопределено возвращаемым значением.

В конечном итоге, функция `reviver` вызывается с пустой строкой и самым верхним значением, чтобы обеспечить преобразование самого верхнего значения. Убедитесь, что вы правильно обрабатываете этот случай — обычно для этого нужно просто вернуть само значение — или метод `JSON.parse()` вернёт `undefined`.


```js
JSON.parse('{"p": 5}', function (k, v) {
  if (k === "") {
    return v;
  } // самое верхнее значение - возвращаем его
  return v \* 2; // иначе возвращаем v \* 2.
}); // { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
  console.log(k); // пишем имя текущего свойства, последним именем будет ""
  return v; // возвращаем неизменённое значение свойства
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-json.parse |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Использование родного объекта `JSON` (en-US)
* `JSON.stringify()`
WeakMap.prototype.has()
=======================

Метод **`has()`** возвращает булевое значение, которое указывает на то существует элемент с таким ключом в объекте WeakMap или нет.

Синтаксис
---------
```

wm.has(key);
```

### Параметры

key

Обязателен. Ключ элемента, существование которого необходимо проверить в объекте WeakMap.

### Возвращаемое значение

Boolean

Возвращает `true` если элемент с указанным ключом существует в объекте WeakMap, если нет — false.

Примеры
-------

### Использование метода `has`


```js
var wm = new WeakMap();
wm.set(window, "foo");

wm.has(window); // возвращает true
wm.has("baz"); // возвращает false
```

Спецификация
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-weakmap.prototype.has |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Firefox-specific notes
----------------------

* Prior to SpiderMonkey 38, this method threw a `TypeError` when the `key` parameter was not an object. This has been fixed in version 38 and later to return `false` as per latest ES6 standard (Firefox bug 1127827).
See also
--------

* `WeakMap`
* `WeakMap.prototype.set()`
* `WeakMap.prototype.get()`
WeakMap.prototype.get()
=======================

Метод **`get()`** возвращает элемент из объекта WeakMap,

Синтаксис
---------
```

wm.get(key);
```

### Параметры

key

Обязателен. Ключ элемента, который будет возвращён из объекта WeakMap.

### Возвращаемое значение

Возвращает элемент по указанному ключу или undefined, если ключ не может быть найден в объекте WeakMap.

Примеры
-------

### Использование метода get


```js
var wm = new WeakMap();
wm.set(window, "foo");

wm.get(window); // Возвращает "foo".
wm.get("baz"); // Возвращает undefined.
```

Спецификация
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-weakmap.prototype.get |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Firefox-specific notes
----------------------

* Prior to SpiderMonkey 38, this method threw a `TypeError` when the key parameter was not an object. However, the latest ES6 standard specifies to return `undefined` instead. Furthermore, `WeakMap.prototype.get` accepted an optional second argument as a fallback value, which is not part of the standard. Both non-standard behaviors are removed in version 38 and higher (Firefox bug 1127827).
Смотрите также
--------------

* `WeakMap`
* `WeakMap.set()`
* `WeakMap.has()`
WeakMap.prototype.delete()
==========================

`Метод delete()` удаляет элемент из объекта WeakMap.

Синтаксис
---------
```

wm.delete(key);
```

### Параметры

key

Обязателен. Ключ элемента, который будет уделён из объекта WeakMap.

### Возвращаемое значение

Возвращает true если элемент из объекта WeakMap удалён успешно.

Примеры
-------

### Использование метода delete


```js
var wm = new WeakMap();
wm.set(window, "foo");

wm.delete(window); // Возвращает true. Успешно удалён.

wm.has(window); // Возвращает false. Объекта window больше нет в WeakMap.
```

Спецификация
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-weakmap.prototype.delete |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Firefox-specific notes
----------------------

* Prior to SpiderMonkey 38, this method threw a `TypeError` when the `key` parameter was not an object. This has been fixed in version 38 and later to return `false` as per latest ES6 standard (Firefox bug 1127827).
Смотрите также
--------------

* `WeakMap`
WeakMap.prototype.set()
=======================

Метод **`set()`** добавляет новый элемент с указанными ключом и значением в объект WeakMap.

Синтаксис
---------
```

wm.set(key, value);
```

### Параметры

key

Обязателен. Ключ добавляемого в WeakMap объект элемента.

value

Обязателен. Значение добавляемого в WeakMap объект элемента.

### Возвращаемое значение

Объект `WeakMap.`

Примеры
-------

### Использование метода `set`


```js
var wm = new WeakMap();
var obj = {};

// Добавляет новый элемент в объект WeakMap
wm.set(obj, "foo").set(window, "bar"); // chainable

// Обновляет элемент в объекте WeakMap
wm.set(obj, "baz");
```

Спецификация
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-weakmap.prototype.set |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Firefox-specific notes
----------------------

* Prior to Firefox 33, `WeakMap.prototype.set` returned `undefined` and was not chainable. This has been fixed (Firefox bug 1031632). The behavior can be found in Chrome/v8 as well (issue).
Смотрите также
--------------

* `WeakMap`
* `WeakMap.prototype.get()`
* `WeakMap.prototype.has()`
BigInt.asIntN()
===============

Baseline Widely available
-------------------------

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.

* Learn more
* See full compatibility
* Report feedback
**`BigInt.asIntN`** — это статический метод, который позволяет перенести BigInt-значение в целое число со знаком между -2ширина-1 and 2ширина-1-1.

{{EmbedInteractiveExample("pages/js/bigint-asintn.html")}}

Синтаксис
---------
```

BigInt.asIntN(width, bigint);
```

### Аргументы

`width`

Количество битов, доступных для целочисленного размера.

`bigint`

Целое число для зажима, чтобы соответствовать поставляемым битам.

### Возвращаемое значение

Значение `bigint` по модулю 2`width` как целое число со знаком.

Примеры
-------

### Пребывание в 64-битных диапазонах

Метод `BigInt.asIntN()` может быть полезен, чтобы оставаться в диапазоне 64-битной арифметики.


```js
const max = 2n \*\* (64n - 1n) - 1n;

BigInt.asIntN(64, max);
// ↪ 9223372036854775807n

BigInt.asIntN(64, max + 1n);
// ↪ -9223372036854775807n
// отрицательное число из-за переполнения
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-bigint.asintn |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `BigInt`
* `BigInt.asUintN()` (en-US)
Array.prototype.toString()
==========================

Сводка
------

Метод **`toString()`** возвращает строковое представление указанного массива и его элементов.

Синтаксис
---------
```

arr.toString()
```

### Параметры

Нет.

Описание
--------

Объект `Array` переопределяет метод `toString` объекта `Object`. Для объектов класса `Array`, метод `toString` соединяет массив и возвращает одну строку, содержащую каждый элемент массива, разделённый запятыми. Например, следующий код создаёт массив и использует метод `toString` для преобразования массива в строку.


```js
var monthNames = ["Янв", "Фев", "Мар", "Апр"];
var myVar = monthNames.toString(); // присваивает 'Янв,Фев,Мар,Апр' переменной myVar.
```


JavaScript вызывает метод `toString` автоматически, когда массив представляется текстовым значением или когда массив находится в контексте конкатенации строк.

### Семантика ECMAScript 5

Начиная с JavaScript 1.8.5 (Firefox 4), и в соответствии с семантикой ECMAScript 5-го издания, метод `toString()` является обобщённым и может использоваться с любым объектом. В случае с массивами, если он имеет метод `join()`, он будет вызван и результат его работы будет возвращён. В противном случае будет вызван метод `Object.prototype.toString()`, и будет возвращён результат его работы.

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-array.prototype.tostring |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Object.prototype.toSource()` (en-US)
Array.prototype.toLocaleString()
================================

Сводка
------

Метод **`toLocaleString()`** возвращает строковое представление элементов массива. Элементы преобразуются в строки с использованием своих собственных методов `toLocaleString` и эти строки разделяются локале-зависимой строкой (например, запятой «,»).

Синтаксис
---------
```

arr.toLocaleString();
```

### Параметры

Нет.

Описание
--------

Элементы массива преобразуются в строки с использованием своих собственных методов `toLocaleString`:

* `Object`: `Object.prototype.toLocaleString()`
* `Number`: `Number.prototype.toLocaleString()`
* `Date`: `Date.prototype.toLocaleString()`
Примеры
-------

### Пример: использование `toLocaleString`


```js
var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];

var str = myArr.toLocaleString();

console.log(str);
// напечатает '1337,6.12.2013 19:37:35,foo',
// если работает под германской локалью (de-DE) с временной зоной Европа/Берлин
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-array.prototype.tolocalestring |
| ECMAScript Internationalization API Specification # sup-array.prototype.tolocalestring |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Array.prototype.toString()`
Array.prototype.keys()
======================

Метод **`keys()`** возвращает новый **итератор массива** **`Array Iterator`**, содержащий ключи каждого индекса в массиве.

Интерактивный пример
--------------------

Синтаксис
---------
```

arr.keys()
```

Примеры
-------

### Пример: базовое использование


```js
var arr = ["a", "b", "c"];
var iterator = arr.keys();

console.log(iterator.next()); // { value: 0, done: false }
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: undefined, done: true }
```

### Пример: итератор, возвращаемый методом `keys()`, не пропускает дырки в массиве


```js
var arr = ["a", , "c"];
var sparseKeys = Object.keys(arr);
var denseKeys = [...arr.keys()];
console.log(sparseKeys); // [0, 2]
console.log(denseKeys); // [0, 1, 2]
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-array.prototype.keys |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Array.prototype.values()`
* `Array.prototype.entries()`
* Iteration protocols
Array.prototype.unshift()
=========================

Сводка
------

Метод **`unshift()`** добавляет один или более элементов в начало массива и возвращает новую длину массива.

Синтаксис
---------
```

arr.unshift(element1[, ...[, elementN]])
```

### Параметры

`element1, ..., elementN`

Элементы, добавляемые в начало массива.

### Возвращаемое значение

Новое свойство `length` объекта, над которым был вызван метод `unshift`.

Описание
--------

Метод `unshift` вставляет переданные значения в начало массивоподобного объекта.

Метод `unshift` не является привязанным к типу; этот метод может быть вызван или применён к объектам, напоминающим массив. Объекты, не содержащие свойство `length`, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.

Примеры
-------


```js
var arr = [1, 2];

arr.unshift(0); // результат вызова равен 3, новой длине массива
// arr равен [0, 1, 2]

arr.unshift(-2, -1); // = 5
// arr равен [-2, -1, 0, 1, 2]

arr.unshift([-3]);
// arr равен[[-3], -2, -1, 0, 1, 2]
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-array.prototype.unshift |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Array.prototype.push()`
* `Array.prototype.pop()`
* `Array.prototype.shift()`
Array.prototype.push()
======================

Сводка
------

Метод **`push()`** добавляет один или более элементов в конец массива и возвращает новую длину массива.

Синтаксис
---------
```

arr.push(element1, ..., elementN)
```

### Параметры

`elementN`

Элементы, добавляемые в конец массива.

### Возвращаемое значение

Новое значение свойства `length` объекта, для которого был вызван данный метод.

Описание
--------

Метод `push` присоединяет значения к массиву.

Метод `push` не является привязанным к типу; этот метод может быть вызван или применён к объектам, напоминающим массив. Метод опирается на свойство `length` для определения места вставки значений. Если свойство `length` не может быть преобразовано в число, будет использовать индекс 0. Сюда входит случай несуществования свойства `length`, в этом случае оно также будет создано.

Единственными родными массивоподобными объектами являются строки, хотя к ним он не может быть применён, поскольку строки являются неизменяемыми.

Примеры
-------

### Пример: добавление элементов в массив

Следующий код создаёт массив `sports`, содержащий два элемента, а затем добавляет к нему ещё два элемента. Переменная `total` будет содержать новую длину массива.


```js
var sports = ["футбол", "бейсбол"];
var total = sports.push("американский футбол", "плавание");

console.log(sports); // ['футбол', 'бейсбол', 'американский футбол', 'плавание']
console.log(total); // 4
```

### Пример: слияние двух массивов

В этом примере используется функция `apply()` для помещения всех элементов из второго массива в первый.


```js
var vegetables = ["пастернак", "картошка"];
var moreVegs = ["сельдерей", "свёкла"];

// Сливает второй массив с первым
// Эквивалентно вызову vegetables.push('сельдерей', 'свёкла');
Array.prototype.push.apply(vegetables, moreVegs);

console.log(vegetables); // ['пастернак', 'картошка', 'сельдерей', 'свёкла']
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-array.prototype.push |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Array.prototype.pop()`
* `Array.prototype.shift()`
* `Array.prototype.unshift()`
* `Array.prototype.concat()`
Array.length
============

Сводка
------

Свойство **`length`** объекта, который является экземпляром типа `Array` , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.


```js
var items = ["shoes", "shirts", "socks", "sweaters"];
items.length;

// возвращает 4
```

Синтаксис
---------
```

arr.length
```

Описание
--------

Свойство `length` является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (232).


```js
var namelistA = new Array(4294967296); //2 в 32 степени = 4294967296
var namelistC = new Array(-100); //отрицательная величина

console.log(namelistA.length); //RangeError: Invalid array length
console.log(namelistC.length); //RangeError: Invalid array length

var namelistB = [];
namelistB.length = Math.pow(2, 32) - 1; //устанавливает длину массива меньше 2 в 32 степени
console.log(namelistB.length);

//4294967295
```


В любой момент вы можете установить свойство `length` для обрезки массива. Когда вы расширяете массив, изменяя его свойство `length`, реальное количество элементов в массиве увеличивается; например, если вы установите свойство `length` в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно `undefined` .


```js
var arr = [1, 2, 3];
printEntries(arr);

arr.length = 5; // устанавливает длину массива 5.
printEntries(arr);

function printEntries(arr) {
  var goNext = true;
  var entries = arr.entries();
  while (goNext) {
    var result = entries.next();
    if (result.done !== true) {
      console.log(result.value[1]);
      goNext = true;
    } else goNext = false;
  }
  console.log("=== printed ===");
}

// 1
// 2
// 3
// === printed ===
// 1
// 2
// 3
// undefined
// undefined
// === printed ===
```


Таким образом, свойство `length` ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел Взаимосвязь свойства `length` с числовыми свойствами.

| Атрибуты свойства `Array.length` |
| --- |
| Записываемое | да |
| Перечисляемое | нет |
| Настраиваемое | нет |

Примеры
-------

### Пример: итерирование по массиву

В следующем примере массив `numbers` итерируется до значения свойства `length`, показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.


```js
var numbers = [1, 2, 3, 4, 5];

for (var i = 0; i < numbers.length; i++) {
  numbers[i] \*= 2;
}
// Массив numbers теперь равен [2, 4, 6, 8, 10];
```

### Пример: сокращение массива

Следующий пример сокращает массив `statesUS` до длины в 50 элементов, если текущая длина массива больше 50.


```js
if (statesUS.length > 50) {
  statesUS.length = 50;
}
```

Спецификации
------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-properties-of-array-instances-length |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Array`