recursal/MDN huggingface dataset:
Number.prototype.toExponential()
================================

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

Метод **`toExponential()`** возвращает строку, представляющую объект `Number` в экспоненциальной записи.

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

numObj.toExponential([fractionDigits])
```

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

`fractionDigits`

Необязательный параметр. Целое число, определяющее количество цифр после десятичной запятой. По умолчанию используется столько цифр, сколько необходимо для указания числа.

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

Строка, представляющая объект `Number` в экспоненциальной записи с одной цифрой перед десятичной запятой, округлённое до `fractionDigits` цифр после десятичной запятой. Если аргумент `fractionDigits` опущен, количество цифр после десятичной запятой по умолчанию устанавливается в количество цифр, необходимых для однозначного представления значения.

Если вы используете метод `toExponential()` с числовыми литералами и числовой литерал не имеет экспоненты и десятичной запятой, оставьте пробел перед точкой, предшествующей вызову метода для предотвращения интерпретации этой точки как десятичной запятой.

Если число имеет больше цифр, чем запрошено параметром `fractionDigits`, оно будет округлено к ближайшему числу, представляемому `fractionDigits` цифрами. Смотрите обсуждение округления в описании метода `toFixed()`, которое так же применяется и к методу `toExponential()`.

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

`RangeError`

Если параметр `fractionDigits` слишком маленький или слишком большой. Значения между 0 и 20 включительно не будут порождать исключение `RangeError`. Также реализации могут поддерживать большие и меньшие значения.

`TypeError`

Если этот метод вызывается на объекте, не являющимся объектом `Number`.

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

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


```js
var numObj = 77.1234;

console.log(numObj.toExponential()); // выведет 7.71234e+1
console.log(numObj.toExponential(4)); // выведет 7.7123e+1
console.log(numObj.toExponential(2)); // выведет 7.71e+1
console.log((77.1234).toExponential()); // выведет 7.71234e+1
console.log((77).toExponential()); // выведет 7.7e+1
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.prototype.toexponential |

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

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

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

* `Number.prototype.toFixed()`
* `Number.prototype.toPrecision()`
* `Number.prototype.toString()`
Number.isFinite()
=================

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

Метод **`Number.isFinite()`** определяет, является ли переданное значение конечным числом.

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

Number.isFinite(testValue)
```

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

`testValue`

Значение, проверяемое на конечность.

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

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

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


```js
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false

Number.isFinite(0); // true
Number.isFinite(2e64); // true

Number.isFinite("0"); // false, при использовании глобальной
// функции isFinite('0') было бы true
```

Полифил
-------


```js
Number.isFinite =
  Number.isFinite ||
  function (value) {
    return typeof value === "number" && isFinite(value);
  };
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.isfinite |

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

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

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

* Объект `Number`, которому принадлежит этот метод.
Number.MIN\_SAFE\_INTEGER
=========================

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

Константа **`Number.MIN_SAFE_INTEGER`** представляет минимальное безопасное целочисленное значение в JavaScript (`-(253 - 1)`).

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

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

Константа `MIN_SAFE_INTEGER` имеет значение `-9007199254740991`. Смысл этого числа в том, что в JavaScript используется формат чисел с плавающей запятой двойной точности, как определено в стандарте IEEE 754, а он может безопасно представлять числа только в диапазоне от `-(253 - 1)` до `253 - 1`.

Поскольку `MIN_SAFE_INTEGER` является статическим свойством объекта `Number`, вы всегда должны использовать его как `Number.MIN_SAFE_INTEGER`, а не как свойство созданного вами объекта `Number`.

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


```js
Number.MIN\_SAFE\_INTEGER; // -9007199254740991
-(Math.pow(2, 53) - 1); // -9007199254740991
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-number.min\_safe\_integer |

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

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

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

* `Number.MAX_SAFE_INTEGER`
* `Number.isSafeInteger()`
Promise.race()
==============

Метод **Promise.race(iterable)** возвращает выполненный или отклонённый промис, в зависимости от того, с каким результатом завершится первый из переданных промисов, со значением или причиной отклонения этого промиса.

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

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


```js
Promise.race(iterable);
```

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

`iterable`

Итерируемый объект, такой как (`Array`). Смотри iterable (en-US).

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

Выполненный или отклонённый `Promise` в зависимости от результата первого завершённого из переданных в итерируемом объекте промисов.

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

Метод `race` возвращает `Promise` с результатом, первого завершённого из переданных промисов. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.

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

### Использование `Promise.race` – пример с `setTimeout`


```js
var p1 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 500, "один");
});
var p2 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 100, "два");
});

Promise.race([p1, p2]).then(function (value) {
  console.log(value); // "два"
  // Оба вернули resolve, однако p2 вернул результат первым
});

var p3 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 100, "три");
});
var p4 = new Promise(function (resolve, reject) {
  setTimeout(reject, 500, "четыре");
});

Promise.race([p3, p4]).then(
  function (value) {
    console.log(value); // "три"
    // p3 быстрее, поэтому выведется значение его resolve
  },
  function (reason) {
    // Не вызывается
  },
);

var p5 = new Promise(function (resolve, reject) {
  setTimeout(resolve, 500, "пять");
});
var p6 = new Promise(function (resolve, reject) {
  setTimeout(reject, 100, "шесть");
});

Promise.race([p5, p6]).then(
  function (value) {
    // Не вызывается
  },
  function (reason) {
    console.log(reason); // "шесть"
    // p6 быстрее, выводится его rejects
  },
);
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.race |

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

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

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

* `Promise`
Promise.reject()
================

Метод **`Promise.reject(reason)`** возвращает объект `Promise, который был отклонён по указанной причине`.

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

Promise.reject(reason);
```

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

reason

Причина по которой `Promise` был отклонён.

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

Отклонённый с указанной причиной `Promise`.

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

`Promise.reject` возвращает `Promise` который был отклонён. В целях отладки и выборочного отлова ошибок, удобно использовать в качестве причины объекты `Error`.

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

### Использование статического метода Promise.reject()


```js
Promise.reject(new Error("провал")).then(
  function (success) {
    // не вызывается
  },
  function (error) {
    console.log(error); // печатает "провал" + Stacktrace
    throw error; // повторно выбрасываем ошибку, вызывая новый reject
  },
);
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.reject |

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

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

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

* `Promise`
* Выборочный отлов ошибок с использованием библиотеки BlueBird Promise
Promise.allSettled()
====================

Метод **`Promise.allSettled()`** возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.

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

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

promise.allSettled(iterable);
```

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

`iterable`

Любой итерируемый объект, такой как `Array`, в котором каждый элемент является `Promise`.

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

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

Объект каждого результата содержит свойство `status`. Если `status` имеет значение `fulfilled` (выполнено), то объект будет содержать свойство `value`. Если `status` имеет значение `rejected` (отклонено), то объект будет содержать свойство `reason`. Свойство `value` (или `reason`) будет содержать значение с которым был выполнен (или отклонён) промис.

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.allsettled |

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

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

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

* Promises
* Использование промисов
* Graceful asynchronous programming with promises
* `Promise`
* `Promise.all()`
Promise.prototype.finally()
===========================

Метод **`finally()`** возвращает `Promise`. Когда промис был выполнен, вне зависимости успешно или с ошибкой, указанная функция будет выполнена. Это даёт возможность запустить один раз определённый участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился `Promise`.

Это позволяет вам избавиться от дубликации кода в обработчиках `then()` и `catch()`.

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

p.finally(onFinally);

p.finally(function() {
   // завершён (успешно или с ошибкой)
});

p.finally(() => {
// завершён (успешно или с ошибкой)
});
```

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

`onFinally`

Функция `Function` вызываемая когда промис завершен.

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

Возвращает `Promise` для которого в качестве обработчика `finally` задана функция `onFinally`.

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

`finally()` может быть полезен, если необходимо произвести какие-либо вычисления или очистку, как только `Promise` (промис) завершено, вне зависимости от результата.

`finally()` очень схож с вызовом `.then(onFinally, onFinally)`, однако существует несколько различий:

* Использование `finally()` позволяет избежать двойного объявления одной и той же функции или создания переменной.
* `finally` не получает аргументов, так как не существует способа определить, будет ли промис выполнен успешно или с ошибкой. Данный метод необходимо использовать, если не важна причина ошибки или результат успешного выполнения и, следовательно, нет необходимости её/его передавать.
* В отличие от `Promise.resolve(2).then(() => {}, () => {})` (результатом которого будет resolved-промис, со значением `undefined`), результатом `Promise.resolve(2).finally(() => {})` будет resolved-промис со значением `2`.
* Аналогично, в отличии от `Promise.reject(3).then(() => {}, () => {})` (результатом которого будет resolved-промис, со значением `undefined`), результатом `Promise.reject(3).finally(() => {})` будет rejected-промис со значением `3`.

**Примечание:** A `throw` (or returning a rejected promise) in the `finally` callback will reject the new promise with the rejection reason specified when calling `throw()`.

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


```js
let isLoading = true;

fetch(myRequest)
  .then(function (response) {
    var contentType = response.headers.get("content-type");
    if (contentType && contentType.includes("application/json")) {
      return response.json();
    }
    throw new TypeError("Oops, we haven't got JSON!");
  })
  .then(function (json) {
    /\* process your JSON further \*/
  })
  .catch(function (error) {
    console.log(error);
  })
  .finally(function () {
    isLoading = false;
  });
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.prototype.finally |

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

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

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

* `Promise`
* `Promise.prototype.then()`
* `Promise.prototype.catch()`
Promise.resolve()
=================

Метод **`Promise.resolve(value)`** возвращает `Promise` выполненный с переданным значением. Если переданное значение является thenable - объект (т.е. имеет метод `"then" method`), возвращаемый промис будет следовать thenable - объекту, принимая своё состояние; в ином случае возвращаемый промис будет выполнен с переданным значением.

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

Promise.resolve(value);
Promise.resolve(promise);
Promise.resolve(thenable);
```

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

value

Значение с которым будет выполнен промис. Может также быть промисом или объект подобный промису (thenable - объект имеющий метод then).

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

Выполненный с переданным значением `Promise`.

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

`Метод Promise.resolve` возвращает выполненное промис (`Promise`).

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

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


```js
Promise.resolve("Success").then(
  function (value) {
    console.log(value); // "Success"
  },
  function (value) {
    // не будет вызвана
  },
);
```

### Выполнение с массивом


```js
var p = Promise.resolve([1, 2, 3]);
p.then(function (v) {
  console.log(v[0]); // 1
});
```

### Выполнение с другим промисом ( `Promise`)


```js
var original = Promise.resolve(true);
var cast = Promise.resolve(original);
cast.then(function (v) {
  console.log(v); // true
});
```

### Выполнение с thenable объектом и выбрасывание исключений


```js
// Выполнение с thenable объектом
var p1 = Promise.resolve({
  then: function (onFulfill, onReject) {
    onFulfill("fulfilled!");
  },
});
console.log(p1 instanceof Promise); // true

p1.then(
  function (v) {
    console.log(v); // "fulfilled!"
  },
  function (e) {
    // не вызывается
  },
);

// Thenable объект выбрасывает исключение
// перед вызовом колбэка Promise resolves
var thenable = {
  then: function (resolve) {
    throw new TypeError("Throwing");
    resolve("Resolving");
  },
};

var p2 = Promise.resolve(thenable);
p2.then(
  function (v) {
    // не вызывается
  },
  function (e) {
    console.log(e); // TypeError: Throwing
  },
);

// Thenable объект выбрасывает исключение
// после вызова колбэка Promise resolves
var thenable = {
  then: function (resolve) {
    resolve("Resolving");
    throw new TypeError("Throwing");
  },
};

var p3 = Promise.resolve(thenable);
p3.then(
  function (v) {
    console.log(v); // "Resolving"
  },
  function (e) {
    // не вызывается
  },
);
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.resolve |

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

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

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

* `Promise`
Promise.all()
=============

Общее описание
--------------

Метод **`Promise.all(iterable)`** возвращает промис, который выполнится тогда, когда будут выполнены все промисы, переданные в виде перечисляемого аргумента, или отклонено любое из переданных промисов.

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

Promise.all(iterable);
```

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

iterable

Перечисляемый объект, например, массив (`Array`). Смотрите iterable (en-US).

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

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

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

**`Promise.all`** возвращает массив значений от всех промисов, которые были ему переданы. Возвращаемый массив значений сохраняет порядок оригинального перечисляемого объекта, но не порядок выполнения промисов. `Если какой-либо элемент перечисляемого объекта не является промисом, то он будет преобразован с помощью метода `Promise.resolve`.

Если одно из переданных промисов будет отклонено, **`Promise.all`** будет немедленно отклонён со значением отклонённого промиса, не учитывая другие промисы, независимо выполнены они или нет. Если в качестве аргумента будет передан пустой массив, то `Promise.all` будет выполнен немедленно.

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

### Использование `Promise.all`

**Promise.all** ждёт выполнения всех промисов (или первого метода `reject()`).


```js
var p1 = Promise.resolve(3);
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "foo");
});

Promise.all([p1, p2, p3]).then((values) => {
  console.log(values);
});

//Выведет:
// [3, 1337, "foo"]
```

### `Promise.all` поведение немедленного отклонения

**`Promise.all`** будет немедленно отклонён если один из переданных промисов будет отклонен: если у вас есть четыре промиса которые будут выполнены с задержкой и один, который будет отклонен немедленно - тогда **`Promise.all`** будет немедленно отклонён.


```js
var p1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 1000, "one");
});
var p2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 2000, "two");
});
var p3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 3000, "three");
});
var p4 = new Promise((resolve, reject) => {
  setTimeout(resolve, 4000, "four");
});
var p5 = new Promise((resolve, reject) => {
  // Этот промис прервёт Promise.all
  reject("reject");
});

Promise.all([p1, p2, p3, p4, p5]).then(
  (value) => {
    console.log(value);
  },
  (reason) => {
    console.log(reason);
  },
);

//Выведет:
//"reject"
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-promise.all |

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

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

Родственные темы
----------------

* `Promise`
* `Promise.race()`
Generator.prototype.next()
==========================

Метод **`next()`** возвращает объект с двумя свойствами `done` и `value`. Также вы можете задать параметр для метода `next`, чтобы отправить значение в генератор.

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

gen.next(value)
```

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

`value`

Значение, отправляемое в генератор. Значение будет установлено в виде результата выражения yield, т. е. в [переменная] = yield [выражение] значение, которое было передано в функцию .next будет присвоено [переменной].

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

`Object` с двумя свойствами:

* `done` (boolean)
    + Имеет значение `true`, если итератор находится за окончанием итерируемой последовательности. В этом случае `value` может указывать *возвращаемое значение* итератора.
    + Имеет значение `false`, если итератор может создать следующее значение в последовательности. Это эквивалентно вообще не указанному свойству `done`.
* `value` - любое JavaScript значение, возвращаемое итератором. Может быть опущено, когда `done` имеет значение `true`.
Примеры
-------

### Использование `next()`

Следующий пример показывает простой генератор и объект, который возвращает метод `next`:


```js
function\* gen() {
  yield 1;
  yield 2;
  yield 3;
}

var g = gen(); // "Generator { }"
g.next(); // "Object { value: 1, done: false }"
g.next(); // "Object { value: 2, done: false }"
g.next(); // "Object { value: 3, done: false }"
g.next(); // "Object { value: undefined, done: true }"
```

### Отправка значения в генератор

В этом примере `next` вызывается со значением. Отметим, что первый вызов ничего не вывел, потому что генератор изначально ничего не получил.


```js
function\* gen() {
  while (true) {
    var value = yield null;
    console.log(value);
  }
}

var g = gen();
g.next(1);
// "{ value: null, done: false }"
g.next(2);
// 2
// "{ value: null, done: false }"
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-generator.prototype.next |

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

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

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

* `function*`
* Итераторы и генераторы
Generator.prototype.throw()
===========================

Метод **`throw()`** возобновляет выполнение тела генератора кидая внутри исключение `и возвращает объект со свойствами done и value`.

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

gen.throw(exception)
```

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

`exception`

Исключение, которое будет брошено. Во время отладки бывает полезно сделать его `instanceof` `Error`.

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

Объект с двумя свойствами:

* `done` (boolean)
    + Имеет значение `true` если iterator прошёл конец итерируемой последовательности. В этом случае `value` опционально определяется выражением *return value* внутри итератора .
    + Имеет значение `false` если iterator имеет возможность вернуть следующее значение последовательности. Это равносильно когда свойство done не указано.
* `value` - любое JavaScript значение, возвращённое итератором. Может быть проигнорировано, когда *`done` === `true`*.
Примеры
-------

### Использование `throw()`

В этом примере показан простой генератор и исключение, которое выбрасывается используя метод `throw`. Исключение может быть поймано, используя, как обычно, блок `try...catch`.


```js
function\* gen() {
  while (true) {
    try {
      yield 42;
    } catch (e) {
      console.log("Error caught!");
    }
  }
}

var g = gen();
g.next();
// { value: 42, done: false }
g.throw(new Error("Something went wrong"));
// "Error caught!"
// { value: 42, done: false }
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-generator.prototype.throw |

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

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

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

* `function*`
Generator.prototype.return()
============================

Метод **`return()`** возвращает полученное значение и останавливает генератор.

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

gen.return(value)
```

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

`value`

Значение для возврата.

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

Значение, которое было передано в виде аргумента.

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

### Использование `return()`

Следующий пример показывает простой генератор и метод `return`.


```js
function\* gen() {
  yield 1;
  yield 2;
  yield 3;
}

var g = gen();

g.next(); // { value: 1, done: false }
g.return("foo"); // { value: "foo", done: true }
g.next(); // { value: undefined, done: true }
```


Если `return(value)` вызывает генератор, который находится в уже "завершённом" состоянии, генератор останется в "завершённом" состоянии. Если аргумент не был передан, свойство `value` вернёт тот же объект, что и `.next()`. Если аргумент был передан, он будет установлен как значение свойства `value` возвращаемого объекта.


```js
function\* gen() {
  yield 1;
  yield 2;
  yield 3;
}

var g = gen();
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }
g.return(); // { value: undefined, done: true }
g.return(1); // { value: 1, done: true }
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-generator.prototype.return |

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

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

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

* `function*`