recursal/MDN huggingface dataset:
while
=====

Оператор **while** создаёт цикл, выполняющий заданную инструкцию, пока истинно проверяемое условие. Логическое значение условия вычисляется перед исполнением тела цикла.

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

while (условие) {
  инструкция
}
```


`условие`

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

`инструкция`

Инструкция, которая исполняется каждый раз, пока истинно условие. Чтобы выполнить несколько инструкций в цикле, используйте блочный оператор (`{ ... }`) для их группировки.

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

Следующий цикл `while` исполняется, пока `n` не превышает трёх.


```js
var n = 0;
var x = 0;

while (n < 3) {
  n++;
  x += n;
}
```


На каждой итерации цикла `n` увеличивается на единицу и прибавляется к `x`. Таким образом, `x` и `n` принимают следующие значения:

* После первого прохода: `n` = 1 и `x` = 1
* после второго прохода: `n` = 2 и `x` = 3
* После третьего прохода: `n` = 3 и `x` = 6

После окончания третьей итерации условие `n` < 3 больше не является истинным, поэтому цикл завершается.

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-while-statement |

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

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

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

* `do...while`
* `for`
class
=====

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

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

* Learn more
* See full compatibility
* Report feedback
**Class declaration** создаёт новый класс с данным именем на основе прототипного наследования.

Можно так же определить класс, используя class expression. Но в отличие от class expression, class declaration не позволяет снова объявить уже существующий класс, это **приведёт к ошибке типа**.

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


```js
class name [extends] {
  // тело класса
}
```

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

Как и class expression, тело class declaration будет исполняться в строгом режиме. Свойство конструктора является опциональным.

Class declaration не поднимается (в отличие от декларируемых функций).

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

### Простой class declaration

В следующем примере сначала определяется класс с именем Polygon, затем он наследуется для создания класса Square. Заметьте, что super(), используемый в конструкторе, может быть использован только в конструкторе и должен быть вызван до того, как будет использовано ключевое слово this.


```js
class Polygon {
  constructor(height, width) {
    this.name = "Polygon";
    this.height = height;
    this.width = width;
  }
}

class Square extends Polygon {
  constructor(length) {
    super(length, length);
    this.name = "Square";
  }
}
```


**Предупреждение:** ### Попытка объявить класс дваждыПереопределение класса с помощью class declaration вызовет ошибку типа. `js class Foo {}; class Foo {}; // Uncaught TypeError: Identifier 'Foo' has already been declared` Та же ошибка будет вызвана, если класс был определён перед использованием class declaration.


```js
var Foo = class {};
class Foo {} // Uncaught TypeError: Identifier 'Foo' has already been declared
```


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

| Specification |
| --- |
| ECMAScript Language Specification # sec-class-definitions |

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

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

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

* `function` declaration
* `class` expression
* Classes
return
======

Оператор **`return`** завершает выполнение текущей функции и возвращает её значение.

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

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

return [[выражение]];
```


`выражение`

Выражение, значение которого будет возвращено. Если не указано, вместо него возвращается `undefined`.

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

При вызове оператора `return` в функции её выполнение прекращается. Указанное значение возвращается в место вызова функции. Например, приведённая ниже функция возвращает возведённое в квадрат значение своего аргумента, `x` (где `x` – это число):


```js
function square(x) {
  return x \* x;
}
var demo = square(3);
// значение demo будет равняться 9
```


Если возвращаемое значение не указано, вместо него возвращается `undefined`.

Следующие выражения всегда прерывают выполнение функции:


```js
return;
return true;
return false;
return x;
return x + y / 3;
```

### Автоматическая расстановка точек с запятыми

На выражение `return` влияет автоматическая расстановка точек с запятыми (ASI). Разрыв строки не допускается между ключевым словом `return` и выражением.


```js
return
a + b;
```


трансформируется ASI в:


```js
return;
a + b;
```


В консоли появится предупреждение "unreachable code after return statement".

**Примечание:** Начиная с Gecko 40, предупреждение в консоли появляется, если обнаружен недостижимый код после `return`.

Для того, чтобы избежать данной проблемы (предотвратить ASI), можно использовать скобки:


```js
return (
  a + b;
);
```

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

### Прерывание функции

Функция немедленно останавливается в точке, где вызывается `return`.


```js
function counter() {
  for (var count = 1; ; count++) {
    // бесконечный цикл
    console.log(count + "A"); // до 5
    if (count === 5) {
      return;
    }
    console.log(count + "B"); // до 4
  }
  console.log(count + "C"); // никогда не появляется
}

counter();

// Выводит:
// 1A
// 1B
// 2A
// 2B
// 3A
// 3B
// 4A
// 4B
// 5A
```

### Возвращение функции

Смотрите также статью о замыканиях.


```js
function magic(x) {
  return function calc(x) {
    return x \* 42;
  };
}

var answer = magic();
answer(1337); // 56154
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-return-statement |

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

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

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

* Функции
* Замыкания
function
========

**Объявление функции** определяет функцию с указанными аргументами.

Также вы можете определять функции через конструктор `Function` или `функциональное выражение`.

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

function name([param,[, param,[..., param]]]) {
   [statements]
}
```


`name`

Имя функции.

`paramN`

Имя аргумента, переданного в функцию. Максимальное количество аргументов, которое может принять функция, может варьироваться в зависимости от движков.

`statements`

Инструкции, которые составляют тело функции.

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

Функция, созданная через объявление функции, является объектом `Function` и обладает всеми свойствами, методами и поведением объектов такого типа. Смотрите `Function` для подробной информации о функциях.

Также функцию можно создать с помощью выражения (см. `функциональное выражение`).

По умолчанию функции возвращают `undefined`. Чтобы вернуть другое значение, функция должна содержать инструкцию `return`, которая указывает, какое значение возвращать.

### Функции, создаваемые по условию

Функции могут объявлены условно, иначе говоря, объявление функции может содержаться внутри условного оператора. Большинство браузеров, отличных от Mozilla, трактуют подобные условные объявления безотносительно условия, и создадут функцию, вне зависимости от истинностного значения условия; смотрите статью об этом. Поэтому такое использование не рекомендуется, для условного создания функций используйте функциональные выражения.

### Поднимание объявленной функции

Объявление функции в JavaScript поднимает определение функции. Вы можете использовать функцию до того, как вы её объявили:


```js
hoisted(); // выводит "foo"

function hoisted() {
  console.log("foo");
}
```


Заметьте, что `функциональные выражения` не поднимаются:


```js
notHoisted(); // TypeError: notHoisted не является функцией

var notHoisted = function () {
  console.log("bar");
};
```

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

### Использование `function`

Следующий код объявляет функцию, возвращающую итоговое количество продаж, сложенное из количества продаж продуктов `a`, `b` и `c`.


```js
function calc\_sales(units\_a, units\_b, units\_c) {
  return units_a \* 79 + units_b \* 129 + units_c \* 699;
}
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-function-definitions |

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

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

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

* `Функции и область видимости` (en-US)
* `Function`
* `Функциональное выражение`
* `Оператор function*`
* `Выражение function*`
* `Стрелочные функции`
* `GeneratorFunction`
Assertions
==========

Проверка (assertion) задаёт возможность совпадения одним из указанных способов. Проверка может содержать условные выражения, опережающие (look-ahead) и ретроспективные (look-behind) проверки.

Типы
----

**Примечание:** Символ `?` также может быть использован как обычный квантификатор.


| Выражение | Что означает |
| --- | --- |
| x(?=y) | **Опережающая проверка:** `x` подходит только когда за `x` следует `y`. Например, /`Jack(?=Sprat)/` сработает для "Jack" только когда за ним будет "Sprat". `/Jack(?=Sprat|Frost)/` подойдёт для "Jack" только когда за ним будет "Sprat" или "Frost". Следует заметить, что ни "Sprat" ни "Frost" не будут выданы как часть проверки. |
| x(?!y) | **Отрицательная опережающая проверка:** `x` подходит только когда за `x` не следует `y`. Например, `/\d+(?!\.)/` сработает для числа в том случае, если за ним не стоит точка. Выполнение кода `/\d+(?!\.)/.exec('3.141')` выдаст только число "141", поскольку за "3" следует точка. |
| (?<=y)x | **Ретроспективная проверка:** `x` подходит только когда `x` предшествует `y`. Например, `/(?<=Jack)Sprat/` сработает для "Sprat" только если перед ним есть "Jack". `/(?<=Jack|Tom)Sprat/` подойдёт для "Sprat" если перед ним будут "Jack" или "Tom". Заметим, что ни "Jack" ни "Tom" не будут выданы. |
| (?<!y)x | **Отрицательная ретроспективная проверка:** `x` подходит только когда `x` не предшествует `y`. Например, `/(?<!-)\d+/` сработает для числа в том случае, если перед ним не стоит знак минус. Выполнение кода `/(?<!-)\d+/.exec('3')` выдаст "3". Код `/(?<!-)\d+/.exec('-3')` ничего не найдёт, т.к. перед числом есть знак минус. |

Examples
--------

Browser support
---------------

See also
--------
Floor
=====

**XSLT/XPath Reference**: XSLT elements, EXSLT functions, XPath functions, XPath axes

Функция `floor` принимает десятичное число и возвращает наибольшее целое, меньшее или равное исходному.

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

floor( number )
```

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

`number`

Десятичное число

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

Ближайшее целое, меньшее или равное `number`.

### Определено

XPath 1.0 4.4

### Поддержка Gecko

Поддерживается
related\_applications
=====================

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"related\_applications": [
  {
    "platform": "play",
    "url": "https://play.google.com/store/apps/details?id=com.example.app1",
    "id": "com.example.app1"
  }
]
```
 |

Поле `related_applications` field is an array of objects specifying native applications that are installable by, or accessible to, the underlying platform — for example, a native Android application obtainable through the Google Play Store. Предполагается, что такие приложения являются альтернативами веб-сайту манифеста, который предоставляет аналогичные/эквивалентные функции - как эквивалент нативного приложения.

**Примечание:** Разработчик может указать, что нативные приложения предпочтительнее, чем веб-приложение, установив значение `prefer_related_applications` в `true`.

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


```json
"related\_applications": [
  {
    "platform": "play",
    "url": "https://play.google.com/store/apps/details?id=com.example.app1",
    "id": "com.example.app1"
  }, {
    "platform": "itunes",
    "url": "https://itunes.apple.com/app/example-app1/id123456789"
  }
]
```

Значения
--------

Объекты приложения могут содержать следующие значения:

| Свойство | Описание |
| --- | --- |
| `platform` | Платформа, на которой может быть найдено приложение. List of available values |
| `url` | URL, по которому может быть найдено приложение. |
| `id` | ID, используемое для представления приложения на определённой платформе. |

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

| Specification |
| --- |
| Web Application Manifest # related\_applications-member |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
background\_color
=================

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"background\_color": "red"
```
 |

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

Therefore `background_color` should match the `background-color` CSS property in the site's stylesheet for a smooth transition between launching the web application and loading the site's content.

**Примечание:** Свойство `background_color` предназначено только для улучшения удобства пользования, пока главная таблица стилей загружается из сети или с носителя; не должно быть использовано агентом пользователя как свойство CSS `background-color`, когда стили приложения станут доступны.

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


```json
"background\_color": "red"
```

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

| Specification |
| --- |
| Web Application Manifest # background\_color-member |

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

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

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"description": "Удивительное приложение, которое поможет вам достичь вашей мечты."
```
 |

`description` это строка, в которой разработчики могут объяснить, что делает приложение. `description` способно к направленности, что означает, что оно может отображаться слева направо или справа налево на основе значений свойств `dir` и `lang` манифеста.

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

Простой `description` на языке слева направо:


```json
"description": "Удивительное приложение, которое поможет вам достичь вашей мечты."
```


`description` на арабском языке, который будет отображаться справа налево:


```json
"dir": "rtl",
"lang": "ar",
"description": ".تطبيق رائع سيساعدك على تحقيق أحلامك"
```

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

| Specification |
| --- |
| Web App Manifest - Application Information # description-member |

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

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

|  |  |
| --- | --- |
| Type | `Array` |
| Mandatory | Yes |
| Example | 
```json
"icons": [
  {
    "src": "icon.webp",
    "sizes": "48x48",
    "type": "image/webp"
  }
]
```
 |

`icons` Определяет массив объектов изображений, которые могут использованы как иконки приложения в различных контекстах. К примеру, они могут быть использованы для представления приложения среди списка других приложений или для интеграции его с переключателем задач ОС и/или настроек системы.

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


```json
"icons": [
  {
    "src": "icon/lowres.webp",
    "sizes": "48x48",
    "type": "image/webp"
  },
  {
    "src": "icon/lowres",
    "sizes": "48x48"
  },
  {
    "src": "icon/hd\_hi.ico",
    "sizes": "72x72 96x96 128x128 256x256"
  },
  {
    "src": "icon/hd\_hi.svg",
    "sizes": "72x72"
  }
]
```

Значения
--------

Объекты изображений могут содержать следующие значения:

| Параметр | Описание |
| --- | --- |
| `sizes` | Строка, содержащая разделённые пробелами размеры изображения. |
| `src` | 
 Путь к файлу изображения. Если `src` является относительным
 URL, основным URL будет URL манифеста.
  |
| `type` | 
 Служит для определения медиа-типа изображения.Цель свойства позволить
 агенту пользователя быстро проигнорировать изображения медиа-типа,
 который он не поддерживает.
  |
| purpose | 
 Определяет назначение изображения, например, если изображение
 предназначено для каких-то особых целей в контексте ОС (т. е. для
 лучшей интеграции)


`purpose`
 может иметь одно из следующих значений:
 * `badge`: Пользовательский агент может представить этот
 значок там, где ограничения пространства и/или требования к цвету
 отличаются от таковых для значка приложения.
* `maskable`: Изображение разработано с учётом
 масок значков и безопасной зоны, так что пользовательский агент может безопасно игнорировать и
 маскировать любую часть изображения за пределами безопасной зоны.
* `any`: Пользовательский агент может отображать значок в
 любом контексте (это значение по умолчанию).
 |

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

| Specification |
| --- |
| Web Application Manifest # icons-member |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
theme\_color
============

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"theme\_color": "red"
```
 |

`theme_color` определяет цвет темы по умолчанию для приложения. Иногда влияет на то, как приложение отображается ОС (например, в переключателе задач Android цвет темы окружает приложение).

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


```json
"theme\_color": "red"
```

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

| Specification |
| --- |
| Web Application Manifest # theme\_color-member |

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

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

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"display": "standalone"
```
 |

**Примечание:** Если свойство `display` не указано, по умолчанию используется `"browser"`.

`display` - это строка, которая определяет предпочитаемый разработчиком режим отображения для веб-сайта. Режим отображения изменяет количество отображаемого пользовательского интерфейса браузера и может варьироваться от `"browser"` (когда отображается полное окно браузера) до `"fullscreen"` (когда приложение полноэкранно).

**Примечание:** вы можете выборочно применить CSS к своему приложению на основе режима отображения, используя медиа-функцию `display-mode` (en-US). Это может быть использовано для обеспечения более гладкого перехода для пользователя от загрузки сайта по URL к запуску по иконке на рабочем столе.

Значения
--------

Валидные значения следующие:

| Режим отображения | Описание | Резервный режим отображения |
| --- | --- | --- |
| `fullscreen` | Используется все доступное пространство экрана и агент пользователя chrome не отображается. | `standalone` |
| `standalone` | Приложение будет выглядеть и ощущаться, как отдельное приложение. Это может включать наличие другого окна у приложения, собственной иконки в меню запуска и т.д. В этом режиме агент пользователя будет исключать элементы пользовательского интерфейса (ПИ) для контроля за навигацией, но может включать другие элементы ПИ, такие как статус-бар. | `minimal-ui` |
| `minimal-ui` | Приложение будет выглядеть и ощущаться, как отдельное приложение, но будет иметь минимальный набор элементов ПИ для контроля над навигацией. Элементы будут варьироваться в зависимости от браузера. | `browser` |
| `browser` | Приложение открывается в обычной вкладке браузера или новом окне, в зависимости от браузера и платформы. По умолчанию. | (None) |

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


```json
"display": "standalone"
```

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

| Specification |
| --- |
| Web Application Manifest # display-member |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
start\_url
==========

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"start\_url": "https://example.com"
```
 |

`start_url` является строкой, представляющей начальный URL-адрес веб-приложения — предпочтительный URL-адрес, который должен быть загружен при запуске пользователем веб-приложения (например, когда пользователь нажимает на значок веб-приложения в меню приложений или на домашнем экране).

**Примечание:** `start_url` носит чисто рекомендательный характер, и пользовательский агент может его игнорировать или разрешить пользователю изменять его во время установки или после.

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

### Absolute URL


```json
"start\_url": "https://example.com"
```

### Relative URL

Если URL является относительным, для его разрешения используется URL манифеста.


```json
"start\_url": "../startpoint.html"
```

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

| Specification |
| --- |
| Web Application Manifest # start\_url-member |

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

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

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | No |
| Example | 
```json
"orientation": "portrait-primary"
```
 |

`orientation` определяет ориентацию по умолчанию для всех верхних уровней контекстов браузера приложения.

**Примечание:** `orientation` и/или его конкретные значения могут не поддерживаться пользовательским агентом в различных режимах отображения, поскольку их поддержка не имеет смысла для конкретного контекста.

**Примечание:** Ориентация может быть изменена во время выполнения через `API Ориентации экрана` (en-US).

Значения
--------

`orientation` может иметь одно из следующих значений:

* `any`
* `natural`
* `landscape`
* `landscape-primary`
* `landscape-secondary`
* `portrait`
* `portrait-primary`
* `portrait-secondary`
Пример
------


```json
"orientation": "portrait-primary"
```

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

| Specification |
| --- |
| Web Application Manifest # orientation-member |

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

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

|  |  |
| --- | --- |
| Type | `String` |
| Mandatory | Yes |
| Example | 
```json
"name": "Awesome application"
```
 |

`name` - это строка, которая представляет имя веб-приложения, как оно обычно отображается пользователю (например, среди списка других приложений или в качестве метки для значка). `name` поддерживает направленность, что означает, что оно может отображаться слева направо или справа налево в зависимости от значений свойств `dir` и `lang` манифеста.

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

Простое `name` на языке слева направо:


```json
"name": "Потрясающее приложение"
```


`name` справа налево на арабском:


```json
"dir": "rtl",
"lang": "ar",
"name": "!أنا من التطبيق"
```

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

| Specification |
| --- |
| Web Application Manifest # name-member |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
short\_name
===========

|  |  |
| --- | --- |
| Тип | `String` |
| Обязателен | Нет |
| Пример | 
```json
"short\_name": "Awesome app"
```
 |

Элемент `short_name` — это строка, которая определяет название веб-приложения показываемое пользователю, если для отображения `name` не достаточно места (например, в качестве надписи под иконкой приложения на экране телефона). `short_name` может отображаться слева-направо или справе-налево, в зависимости от значений свойств `dir` и `lang` манифеста.

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

Обычно `short_name` отображается слева-направо:


```json
"name": "Awesome application",
"short\_name": "Awesome app"
```


`short_name` на арабском отображается справа-налево:


```json
"dir": "rtl",
"lang": "ar",
"name": "تطبيق رائع",
"short\_name": "رائع"
```

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

| Specification |
| --- |
| Web Application Manifest # short\_name-member |

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

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