aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirshanov Dmitrii <59695332+Kirshach@users.noreply.github.com>2022-02-06 15:46:16 +0300
committerGitHub <noreply@github.com>2022-02-06 19:46:16 +0700
commiteb816c469af04c27aa6c230035743b9db0297946 (patch)
treecc38dd6281d3d60c34f74704e1fb37eb515eae7e
parentac6c8ad8b2f961b5474f47339096b8e59d11cb2e (diff)
downloadtranslated-content-eb816c469af04c27aa6c230035743b9db0297946.tar.gz
translated-content-eb816c469af04c27aa6c230035743b9db0297946.tar.bz2
translated-content-eb816c469af04c27aa6c230035743b9db0297946.zip
fix(ru): function is not an ECMAScript type (#3924)
Спецификация ECMAScript не определяет функцию отдельным типом данных: ...The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, BigInt, and Object (https://tc39.es/ecma262/#sec-ecmascript-language-types)
-rw-r--r--files/ru/web/javascript/data_structures/index.html5
1 files changed, 3 insertions, 2 deletions
diff --git a/files/ru/web/javascript/data_structures/index.html b/files/ru/web/javascript/data_structures/index.html
index f6ed5ab9ca..b2cbc2a50d 100644
--- a/files/ru/web/javascript/data_structures/index.html
+++ b/files/ru/web/javascript/data_structures/index.html
@@ -22,7 +22,7 @@ foo = true; // foo становится типа Boolean
<h2 id="Типы_данных">Типы данных</h2>
-<p>Стандарт ECMAScript определяет 9 типов:</p>
+<p>Стандарт ECMAScript определяет 8 типов:</p>
<ul>
<li>6 типов данных являющихся примитивами:
@@ -37,11 +37,12 @@ foo = true; // foo становится типа Boolean
</li>
<li>{{Glossary("Null")}} (Null тип ) : <code>typeof instance === "object"</code>. Специальный примитив, используемый не только для данных но и в качестве указателя на финальную точку в <a href="/ru/docs/Web/JavaScript/Inheritance_and_the_prototype_chain">Цепочке Прототипов</a>;</li>
<li>{{Glossary("Object")}} (Объект) : <code>typeof instance === "object"</code>. Простая структура, используемая не только для хранения данных, но и для создания других структур, где любая структура создаётся с использованием ключевого слова <code><a href="/ru/docs/Web/JavaScript/Reference/Operators/new">new</a></code>: new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Map">Map</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Set">Set</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/WeakMap">WeakMap</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet">WeakSet</a>, new <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a> и множество других структур;</li>
- <li>и {{Glossary("Function")}} : <code>typeof instance === "function"</code>. Специальный случай, упрощающий определение типа для Функций, несмотря на то, что все функции конструктивно унаследованы от Object.</li>
</ul>
<p>И здесь нам необходимо сделать предостережение относительно использования оператора <code>typeof</code> для определения типа структур, т.к. все структуры будут возвращать <code>"object"</code> при его использовании, так как назначение <code>typeof</code> -- проверка типа данных, но не структур. Если проверить тип структуры всё же необходимо, то в этом случае желательно использовать оператор <a href="/ru/docs/Web/JavaScript/Reference/Operators/instanceof">instanceof</a>, так как именно он отвечает на вопрос о том, какой конструктор был использован для создания структуры.</p>
+<p>Стоит отметить два особых случая работы оператора <code>typeof</code>: возврат <code>"object"</code> для значения <code>null</code> и <code>"function"</code> для функций: первое принято считать ошибкой языка, сохраненной ради обратной совместимости, второе является условностью, удобной для проверки на принадлежность значения категории функций, где функция - это особый, "вызываемый", объект.</p>
+
<h2 id="Примитивные_значения">Примитивные значения</h2>
<p>Все типы данных в JavaScript, кроме объектов, являются иммутабельными (значения не могут быть модифицированы, а только перезаписаны новым полным значением). Например, в отличии от C, где строку можно посимвольно корректировать, в JavaScript строки пересоздаются только полностью. Значения таких типов называются «примитивными значениями».</p>