recursal/MDN huggingface dataset:
Date.prototype.getYear()
========================

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

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

Метод **`getYear()`** возвращает год указанной даты по местному времени. Поскольку метод `getYear()` не возвращает полный год («проблема 2000 года»), он больше не используется и был заменён методом `getFullYear()`.

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

dateObj.getYear()
```

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

Нет.

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

Метод `getYear()` возвращает год минус 1900; таким образом:

* Для годов, больших, либо равных 2000, значение, возвращённое методом `getYear()`, будет равно 100 или выше. Например, если год равен 2026, метод `getYear()` вернёт 126.
* Для годов между 1900 и 1999 включительно, значение, возвращённое методом `getYear()`, лежит между 0 и 99. Например, если год равен 1976, метод `getYear()` вернёт 76.
* Для годов, меньших 1900, значение, возвращённое методом `getYear()`, будем меньше 0. Например, если год равен 1800, метод `getYear()` вернёт -100.

Чтобы учесть года до и после 2000, вы должны вместо метода `getYear()` использовать метод `getFullYear()`, который возвращает полный год.

Обратная совместимость
----------------------

### Поведение в JavaScript 1.2 и ранее

Метод `getYear()` возвращал 2-х или 4-х значный год:

* Для годов между 1900 и 1999 включительно, значение, возвращаемое методом `getYear()`, было годом минус 1900. Например, если год равнялся 1976, возвращаемое значение равнялось 76.
* Для годов, меньших 1900, либо больших 1999, значение, возвращаемое методом `getYear()` было четырёхзначным годом. Например, если год равнялся 1856, возвращаемое значение равнялось 1856. Если год равнялся 2026, возвращаемое значение равнялось 2026.
Примеры
-------

### Пример: года между 1900 и 1999

Вторая инструкция присваивает значение 95 переменной `year`.


```js
var Xmas = new Date("December 25, 1995 23:15:00");
var year = Xmas.getYear(); // вернёт 95
```

### Пример: года после 1999

Вторая инструкция присваивает значение 100 переменной `year`.


```js
var Xmas = new Date("December 25, 2000 23:15:00");
var year = Xmas.getYear(); // вернёт 100
```

### Пример: года до 1900

Вторая инструкция присваивает значение -100 переменной `year`.


```js
var Xmas = new Date("December 25, 1800 23:15:00");
var year = Xmas.getYear(); // вернёт -100
```

### Пример: установка и получение года между 1900 и 1999

Вторая инструкция присваивает значение 95 переменной `year`, которое представляет 1995 год.


```js
var Xmas.setYear(95);
var year = Xmas.getYear(); // вернёт 95
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.getyear |

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

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

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

* `Date.prototype.getFullYear()`
* `Date.prototype.getUTCFullYear()`
* `Date.prototype.setYear()`
Date.prototype.toDateString()
=============================

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

Метод **`toDateString()`** возвращает часть, содержащую только дату объекта `Date` в виде человеко-читаемой строки на американском английском.

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

dateObj.toDateString()
```

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

Экземпляры объекта `Date` ссылаются на определённый момент времени. Вызов метода `toString()` вернёт дату, отформатированную в виде человеко-читаемой строки на американском английском. В SpiderMonkey она состоит из части, содержащей дату (день, месяц и год) и следующей за ней части, содержащей время (часы, минуты, секунды и часовой пояс). Иногда желательно получить строку, содержащую только часть с датой; этого можно достигнуть использованием метода `toDateString()`.

Метод `toDateString()` полезен тем, что совместимые движки, реализующие ECMA-262 (en-US) могут давать разные строки с помощью метода `toString()` объекта `Date`, поскольку формат строки зависит от реализации и простой подход с разрезанием строки на дату и время может не всегда сработать.

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

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


```js
var d = new Date(1993, 6, 28, 14, 39, 7);

console.log(d.toString()); // напечатает Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)
console.log(d.toDateString()); // напечатает Wed Jul 28 1993
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-date.prototype.todatestring |

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

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

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

* `Date.prototype.toLocaleDateString()`
* `Date.prototype.toTimeString()`
* `Date.prototype.toString()`
ArrayBuffer.isView()
====================

Метод `ArrayBuffer.isView(arg)` возвращает `true`, если `arg` является одним из таких видов `ArrayBuffer`, как типизированные массивы или `DataView`; в ином случае возвращает `false`.

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

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

ArrayBuffer.isView(arg)
```

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

`arg`

Проверяемое значение.

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

`true`, если переданный аргумент является одним из видов `ArrayBuffer`; в противном случае `false`.

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


```js
ArrayBuffer.isView(); // false
ArrayBuffer.isView([]); // false
ArrayBuffer.isView({}); // false
ArrayBuffer.isView(null); // false
ArrayBuffer.isView(undefined); // false
ArrayBuffer.isView(new ArrayBuffer(10)); // false

ArrayBuffer.isView(new Uint8Array()); // true
ArrayBuffer.isView(new Float32Array()); // true
ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true

var buffer = new ArrayBuffer(2);
var dv = new DataView(buffer);
ArrayBuffer.isView(dv); // true
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-arraybuffer.isview |

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

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

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

* Типизированные массивы JavaScript
ArrayBuffer.prototype.slice()
=============================

Метод **`slice()`** вернёт новый `ArrayBuffer`, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).

Syntax
------
```

arraybuffer.slice(begin[, end])
```

### Parameters

`begin`

Указывает с какого индекса начинать slice, начинается с нуля.


`end`

Указывает до какого индекса делать slice. Если не указан - slice будет выполнен до конца `ArrayBuffer. Разница между begin и end должна быть положительной и быть не более длины ArrayBuffer, в противном случае будет выставлен 0.`

### Return value

Новый объект `ArrayBuffer`.

Description
-----------

Метод `slice` копирует, до индекса в параметре end (не включительно) . В случае если `begin` или `end` негативен, то индекс считается с конца массива.

Examples
--------

### Копируем `ArrayBuffer`


```js
var buf1 = new ArrayBuffer(8);
var buf2 = buf1.slice(0);
```

Specifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-arraybuffer.prototype.slice |

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

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

See also
--------

* `ArrayBuffer`
SyntaxError: Unexpected token
=============================

Сообщение
---------
```

SyntaxError: expected expression, got "x"
SyntaxError: expected property name, got "x"
SyntaxError: expected target, got "x"
SyntaxError: expected rest argument name, got "x"
SyntaxError: expected closing parenthesis, got "x"
SyntaxError: expected '=>' after argument list, got "x"
```

Тип ошибки
----------

`SyntaxError`Что пошло не так?
-----------------

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

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

### Ожидаемое выражение

Недопустимыми являются, к примеру, запятые после элементов цепочки выражений.


```js
for (let i = 0; i < 5,; ++i) {
  console.log(i);
}
// SyntaxError: expected expression, got ';'
```


Правильным вариантом будет убрать запятую или добавить ещё одно выражение:


```js
for (let i = 0; i < 5; ++i) {
  console.log(i);
}
```

### Недостаточно скобок

Иногда можно потерять скобки при использовании `if`:


```js
function round(n, upperBound, lowerBound){
  if(n > upperBound) || (n < lowerBound){
    throw 'Число ' + String(n) + ' больше, чем ' + String(upperBound) + ', или меньше, чем ' + String(lowerBound);
  }else if(n < ((upperBound + lowerBound)/2)){
    return lowerBound;
  }else{
    return upperBound;
  }
} // SyntaxError: expected expression, got '||'
```


На первый взгляд кажется, что скобки расставлены правильно, но обратите внимание, что `||` находится не в скобках. Необходимо заключить `||` в скобки:


```js
function round(n, upperBound, lowerBound) {
  if (n > upperBound || n < lowerBound) {
    throw (
      "Число " +
      String(n) +
      " больше, чем " +
      String(upperBound) +
      ", или меньше, чем " +
      String(lowerBound)
    );
  } else if (n < (upperBound + lowerBound) / 2) {
    return lowerBound;
  } else {
    return upperBound;
  }
}
```
URIError: malformed URI sequence
================================

Сообщение
---------
```

URIError: malformed URI sequence (Firefox)
URIError: URI malformed (Chrome)
```

Тип ошибки
----------

`URIError`Что пошло не так?
-----------------

Декодирование или кодирование URI не было успешным. Аргумент переданный функциям `decodeURI`, `encodeURI`, `encodeURIComponent`, или `decodeURIComponent` был недопустимым, из-за этого функция не смогла выполнить кодирование или декодирование.

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

### Кодирование

Кодирование заменяет каждое вхождение конкретного символа одним, двумя, тремя или четырьмя управляющими последовательностями, представленными стандартом UTF-8. `URIError` возникнет, при попытке кодирования суррогата, не являющегося частью high-low пары, например:


```js
encodeURI("\uD800");
// "URIError: malformed URI sequence"

encodeURI("\uDFFF");
// "URIError: malformed URI sequence"
```


Нормальная high-low пара. Например:


```js
encodeURI("\uD800\uDFFF");
// "%F0%90%8F%BF"
```

### Декодирование

Декодирование заменяет каждую управляющую последовательность в закодированном URI компоненте символом, который она представляет. Если такого символа нет, возникнет ошибка:


```js
decodeURIComponent("%E0%A4%A");
// "URIError: malformed URI sequence"
```


Правильный вариант обычно выглядит так:


```js
decodeURIComponent("JavaScript\_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B");
// "JavaScript\_шеллы"
```

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

* `URIError`
* `decodeURI`
* `encodeURI`
* `encodeURIComponent`
* `decodeURIComponent`
TypeError: "x" is read-only(Ошибка Типа: "x" только для чтения)
===============================================================

Сообщения
---------
```

TypeError: назначение свойств только для чтения не допускается в строгом режиме (Edge)
TypeError: "x" доступен только для чтения (Firefox)
TypeError: 0 доступен только для чтения (Firefox)
TypeError: не удаётся назначить только для чтения свойство "x" из #<объект> (Chrome)
TypeError: не удаётся назначить только для чтения свойство '0' [массив объектов] (Chrome)
```

Тип ошибки
----------

`TypeError`Что пошло не так?
-----------------

Назначенное свойство глобальной переменной или объекта является свойством только для чтения. (Технически это свойство данных, недоступное для записи.)

Эта ошибка возникает только в коде строгого режима. В нестрогом коде назначение игнорируется.

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

### недействительные кейсы

Свойства только для чтения не очень распространены, но их можно создать с помощью `Object.defineProperty()` или `Object.freeze()`.


```js
"use strict";
var obj = Object.freeze({ name: "Elsa", score: 157 });
obj.score = 0; // TypeError

("use strict");
Object.defineProperty(this, "LUNG\_COUNT", { value: 2, writable: false });
LUNG\_COUNT = 3; // TypeError

("use strict");
var frozenArray = Object.freeze([0, 1, 2]);
frozenArray[0]++; // TypeError
```


В JavaScript также встроено несколько свойств, доступных только для чтения. Возможно, вы пытались переопределить математическую константу.


```js
"use strict";
Math.PI = 4; // TypeError
```


Прости, ты не можешь этого сделать.

Глобальная переменная undefined также доступна только для чтения, поэтому вы не можете заставить замолчать печально известную ошибку "undefined is not a function:


```js
"use strict";
undefined = function () {}; // TypeError: "undefined" доступен только для чтения
```

### Правильные кейсы


```js
"use strict";
var obj = Object.freeze({ name: "Score", points: 157 });
obj = { name: obj.name, points: 0 }; // замена его на новый работающий объект

("use strict");
var LUNG\_COUNT = 2; // "var` работает, потому что он не только для чтения
LUNG\_COUNT = 3; // ok (анатомически маловероятно, хотя)
```

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

* `Object.defineProperty()`
* `Object.freeze()`
SyntaxError: missing } after function body
==========================================

Сообщение
---------
```

SyntaxError: missing } after function body
```

Тип ошибки
----------

`SyntaxError`Что пошло не так?
-----------------

Допущена синтаксическая ошибка где-то в коде создания функции. Кроме того, проверьте, все ли закрывающие круглые и фигурные скобки расставлены в правильном порядке. Справиться с беспорядком поможет использование отступов, а также более аккуратное форматирование кода в целом.

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

### Забытая закрывающая фигурная скобка

Часто в коде функции может быть забыта фигурная скобка:


```js
var charge = function() {
  if (sunny) {
    useSolarCells();
  } else {
    promptBikeRide();
};
```


Правильный код:


```js
var charge = function () {
  if (sunny) {
    useSolarCells();
  } else {
    promptBikeRide();
  }
};
```


Ещё больше путаницы может внести использование IIFE, замыканий и прочих конструкций, где используется большое количество различных скобок:


```js
(function() { if (true) { return false; } );
```


Зачастую облегчить поиск ошибок можно, проверив отступы ещё раз или расставив их по-другому.


```js
(function () {
  if (true) {
    return false;
  }
});
```

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

* Функции
Синтаксическая ошибка: пропущенный символ ")" после списка аргументов
=====================================================================

Сообщение
---------
```

Синтаксическая ошибка: пропущенный символ ")" после списка аргументов
```

Тип ошибки
----------

`SyntaxError`.

Причина возникновения ошибки
----------------------------

Ошибка в вызове функции. Например, опечатка, пропущенный оператор, или некорректно обрамлённая кавычками строка.

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

Из-за отсутствия оператора конкатенации "+", JavaScript ожидает аргумент функции `log` просто `"PI: "`. В этом случае, он должен быть заключён в закрывающие скобки.


```js
console.log('PI: ' Math.PI);
// SyntaxError: missing ) after argument list
```


Можно скорректировать вызов функции `log` добавлением оператора "`+`":


```js
console.log("PI: " + Math.PI);
// "PI: 3.141592653589793"
```

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

* Функции
X.prototype.y called on incompatible type
=========================================

Сообщение
---------
```

TypeError: 'this' не является  Set объектом (EdgE)
TypeError: Function.prototype.toString вызывается несовместимый объект (Firefox)
TypeError: Function.prototype.bind вызывается несовместимая цель (Firefox)
TypeError: Метод Set.prototype.add called вызывается несовместимый приёмник undefined (Chrome)
TypeError: Bind должен вызываться для функции(Chrome)
```

Тип ошибки
----------

`TypeError`Что пошло не так?
-----------------

При возникновении этой ошибки вызывается функция (для данного объекта) с типом this, не соответствующим типу, ожидаемому функцией.

Эта проблема может возникнуть при использовании `Function.prototype.call()` ил `Function.prototype.apply()` методы и предоставление аргумента this, который не имеет ожидаемого типа.

Эта проблема также может возникнуть при предоставлении функции (хранящейся в объекте) в качестве аргумента другой функции. В этом случае объект не будет целью this функции. Чтобы обойти эту проблему, необходимо либо предоставить лямбда-код, который выполняет вызов, либо использовать`Function.prototype.bind()` функция для принудительной передачи аргумента this ожидаемому объекту.

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

### Неправильные


```js
var mySet = new Set();
["bar", "baz"].forEach(mySet.add);
// mySet.add is a function, but "mySet" is not captured as this.

var myFun = function () {
  console.log(this);
};
["bar", "baz"].forEach(myFun.bind);
// myFun.bind is a function, but "myFun" is not captured as this.
```

### Правильные


```js
var mySet = new Set();
["bar", "baz"].forEach(mySet.add.bind(mySet));
// This works due to binding "mySet" as this.

var myFun = function () {
  console.log(this);
};
["bar", "baz"].forEach((x) => myFun.bind(x));
// This works using the "bind" function. It creates a lambda forwarding the argument.
```

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

* `Function.prototype.call()`
* `Function.prototype.apply()`
* `Function.prototype.bind()`
TypeError: can't assign to property "x" on "y": not an object
=============================================================

Ошибка строгого режима JavaScript "can't assign to property" ("невозможно присвоить свойство") происходит в тот момент, когда вы пытаетесь создать свойство примитивного типа данных (такого как символ, строка, число или булевое значение). Примитивные типы данных не могут содержать никаких свойств.Message
-------
```

TypeError: can't assign to property "x" on {y}: not an object> (Firefox)
TypeError: Cannot create property 'x' on {y} (Chrome)
```

Error type
----------

`TypeError`.

What went wrong?
----------------

In `Strict_mode`, a `TypeError` is raised when attempting to create a property on primitive value such as a symbol (en-US), a string, a number or a boolean. Primitive values cannot hold any property (en-US).

The problem might be that an unexpected value is flowing at an unexpected place, or that an object variant of a `String` or a `Number` is expected.

Examples
--------

### Invalid cases


```js
"use strict";

var foo = "my string";
// The following line does nothing if not in strict mode.
foo.bar = {}; // TypeError: can't assign to property "bar" on "my string": not an object
```

### Fixing the issue

Either fix the code to prevent the primitive from being used in such places, or fix the issue is to create the object equivalent `Object`.


```js
"use strict";

var foo = new String("my string");
foo.bar = {};
```

See also
--------

* `Strict_mode`
* primitive
SyntaxError: "use strict" not allowed in function with non-simple parameters
============================================================================

Сообщение
---------
```

Edge:
Cannot apply strict mode on functions with non-simple parameter list

Firefox:
SyntaxError: "use strict" not allowed in function with default parameter
SyntaxError: "use strict" not allowed in function with rest parameter
SyntaxError: "use strict" not allowed in function with destructuring parameter

Chrome:
SyntaxError: Illegal 'use strict' directive in function with non-simple parameter list
```


Перевод:
```

Edge:
Не удаётся применить строгий режим к функциям со списком, содержащим сложные параметры

Firefox:
Ошибка синтаксиса: "use strict" не допускается в функции с параметром по умолчанию
Ошибка синтаксиса: "use strict" не допускается в функции с rest параметром
Ошибка синтаксиса: "use strict" не допускается в функции с параметром, использующим деструктуризацию

Chrome:
Ошибка синтаксиса: недопустимая директива 'use strict' в функции со списком, содержащим сложные параметры
```

Тип ошибки
----------

`SyntaxError`.

Что пошло не так?
-----------------

Директива `"use strict"` была использована в верхней части функции, которая имеет один из следующих параметров:

* параметры по умолчанию
* остальные параметры
* деконструкция параметров

Директива "use strict" не допускается в верхней части таких функций согласно спецификации ECMAScript.

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

### Функция заявления

В этом случае функция sum имеет параметры по умолчанию a=1 и b=2:


```js
function sum(a = 1, b = 2) {
  //SyntaxError: использовать "use strict" не разрешено в функции с параметром по умолчанию
  'use strict';
  return a + b;
}
```


Если функция должна находиться в строгом режиме, и весь скрипт или заключающая функция также в порядке, чтобы быть в строгом режиме, вы можете переместить директиву "use strict" за пределы функции:


```js
"use strict";
function sum(a = 1, b = 2) {
  return a + b;
}
```

### Функция выражения

Выражение функции может использовать ещё один обходной путь:


```js
var sum = function sum([a, b]) {
  // SyntaxError: "use strict" не допускается в функции с параметром деструктурирования
  'use strict';
  return a + b;
};
```


Это может быть преобразовано в следующее выражение:


```js
var sum = (function () {
  "use strict";
  return function sum([a, b]) {
    return a + b;
  };
})();
```

### Указательная функция

Если функция со стрелкой должна получить доступ к переменной this, можно использовать функцию со стрелкой в качестве функции включения:


```js
var callback = (...args) => {
  // SyntaxError: "use strict" не допускается в функции с параметром rest
  'use strict';
  return this.run(args);
};
```


Это может быть преобразовано в следующее выражение:


```js
var callback = (() => {
  "use strict";
  return (...args) => {
    return this.run(args);
  };
})();
```

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

* строгий режим
* оператор function
* свободное выражение функции
* параметры по умолчанию
* остальные параметры
* деконструкция параметры
SyntaxError: missing ) after condition
======================================

Сообщение
---------
```

SyntaxError: missing ) after condition
```

Тип ошибки
----------

`SyntaxError`Что пошло не так?
-----------------

Произошла ошибка в написании условия if. В любом языке программирования код принимает решение выполнять действия в зависимости от входных параметров. Оператор if выполняет действия, если условие истинно. В JavaScript это условие должно заключаться в скобки после ключевого слова if, например:


```js
if (condition) {
  // сделать что-то если условие истинно
}
```

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

Это может быть просто недосмотр, внимательно проверьте все скобки в коде.


```js
if (3 > Math.PI {
  console.log("Что?");
}

// SyntaxError: missing ) after condition
```


Чтобы исправить ошибку вы должны поставить закрывающую скобку после условия.


```js
if (3 > Math.PI) {
  console.log("Что?");
}
```


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


```js
if (done is true) {
 console.log("мы сделали!");
}

// SyntaxError: missing ) after condition
```


Вместо этого используйте нужный оператор сравнения. Для примера:


```js
if (done === true) {
  console.log("мы сделали!");
}
```

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

* `if...else`
* Операторы сравнения
* Making decisions in your code — conditionals