diff options
author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
---|---|---|
committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
commit | c058fa0fb22dc40ef0225b21a97578cddd0aaffa (patch) | |
tree | df20f8b4c724b61cb9c34cdb450a7ac77d690bd0 /files/ru/словарь/primitive/index.html | |
parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
download | translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.gz translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.bz2 translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.zip |
unslug ru: move
Diffstat (limited to 'files/ru/словарь/primitive/index.html')
-rw-r--r-- | files/ru/словарь/primitive/index.html | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/files/ru/словарь/primitive/index.html b/files/ru/словарь/primitive/index.html deleted file mode 100644 index cdeff2610a..0000000000 --- a/files/ru/словарь/primitive/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Primitive -slug: Словарь/Primitive -tags: - - CodingScripting - - Glossary - - JavaScript -translation_of: Glossary/Primitive ---- -<p><strong>Примитив</strong> (значение примитивного типа, примитивный тип данных) это данные, которые не являются {{glossary("object", "объектом")}} и не имеют {{glossary("method","методов")}}. В {{Glossary("JavaScript")}} 7 простых типов данных: {{Glossary("string")}}, {{Glossary("number")}}, {{Glossary("boolean")}}, {{Glossary("null")}}, {{Glossary("undefined")}}, {{Glossary("symbol")}} (новое в {{Glossary("ECMAScript")}} 2015), {{Glossary("bigint")}}.</p> - -<p>Чаще всего значение примитивного типа представлено в низкоуровневой реализации языка.</p> - -<p>Все<strong> </strong>примитивы <strong>неизменяемы (immutable)</strong>, то есть они не могут быть изменены. <span id="result_box" lang="ru"><span>Важно не путать сам примитив с переменной, которой присвоено значение примитивного типа.</span> <span>Переменной может быть переприсвоено новое значение, но существующее значение примитивного типа не может быть изменено подобно объектам, массивам и функциям.</span></span></p> - -<h2 id="Пример">Пример</h2> - -<p><span id="result_box" lang="ru"><span>Этот пример поможет понять, что значения примитивных типов неизменяемы </span></span><strong>(immutable)</strong><span lang="ru"><span>.</span></span></p> - -<h3 id="JavaScript">JavaScript</h3> - -<pre class="brush: js">// Using a string method doesn't mutate the string -var bar = "baz"; -console.log(bar); // baz -bar.toUpperCase(); -console.log(bar); // baz - -// Using an array method mutates the array -var foo = []; -console.log(foo); // [] -foo.push("plugh"); -console.log(foo); // ["plugh"] - -// Assignment gives the primitive a new (not a mutated) value -bar = bar.toUpperCase(); // BAZ -</pre> - -<p><span id="result_box" lang="ru"><span>Примитив может быть заменен, но он не может быть напрямую изменен.</span></span></p> - -<h2 id="Другой_пример_Step-by-step">Другой пример [ Step-by-step ]</h2> - -<p><span id="result_box" lang="ru"><span>Следующий пример поможет разобраться как JavaScript </span></span><span lang="ru"><span>работает с примитивами.</span></span></p> - -<h3 class="highlight-spanned" id="JavaScript_2"><span class="highlight-span">JavaScript</span></h3> - -<pre class="brush: js line-numbers language-js">// The Primitive -let foo = 5; - -// Defining a function that should change the Primitive value -function addTwo(num) { - num += 2; -} -// Another function trying to do the same thing -function addTwo_v2(foo) { - foo += 2; -} - -// Calling our first function while passing our Primitive as an argument -addTwo(foo); -// Getting the current Primitive value -console.log(foo); // 5 - -// Trying again with our second function... -addTwo_v2(foo); -console.log(foo); // 5 -</pre> - -<p><span id="result_box" lang="ru"><span>Вы ожидали, что будет 7 вместо 5?</span> <span>Если так, тогда прочитайте, как работает этот код:</span></span></p> - -<ul> - <li>При вызове обеих функций <code>addTwo</code> <code>и addTwo_v2</code>, JavaScript ищет <span class="short_text" id="result_box" lang="ru"><span>значение для идентификатора</span></span> <code>foo</code>. JavaScript <span id="result_box" lang="ru"><span>правильно определяет нашу переменную, созданную с помощью первого оператора</span></span></li> - <li><span id="result_box" lang="ru"><span>После этого JavaScript передает найденный аргумент в функцию в качестве параметра</span></span></li> - <li>Перед выполнением операторов в теле функции, <strong>JavaScript берет исходный переданный аргумент </strong>(который является примитивом) и создает его локальную копию. <span id="result_box" lang="ru"><span>Эти копии, существующие только внутри областей функций, доступны через идентификаторы, указанные в определениях функций</span></span> (<code>num</code> для <code>addTwo</code>, <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">foo</span></font> для <code>addTwo_v2</code>)</li> - <li><span class="short_text" id="result_box" lang="ru"><span>Затем выполняются операторы функций</span></span>: - <ul> - <li>В первой функции был создан локальный аргумент <code>num</code>. <span id="result_box" lang="ru"><span>Мы увеличиваем его значение на 2</span></span> (а не значение исходной переменной <code>foo</code>).</li> - <li>Во второй функции был создан локальный аргумент<code> foo</code>. Мы увеличиваем его значение на 2 (а не значение исходной (внешней) переменной <code>foo</code>). <span id="result_box" lang="ru"><span>Кроме того, в этой ситуации, внешняя переменная</span></span> <code>foo</code> является недоступной <strong>никаким</strong> способом. Это связано с лексическими областями JavaScript и, как следствие, с затенением переменных. Локальная переменная <code>foo</code> скрывает внешнюю переменную <code>foo</code>. Чтобы получить больше информации, смотри <a href="/en-US/docs/Web/JavaScript/Closures">Closures</a>.</li> - </ul> - </li> - <li>Таким образом, никакие изменения внутри наших функций <strong>не будут</strong> влиять на ИСХОДНУЮ <code>foo</code> вообще, так как мы работаем с ее <strong>копиями</strong></li> -</ul> - -<p><span id="result_box" lang="ru"><span>Вот почему примитивы неизменяемы </span></span><strong>(immutable)</strong><span lang="ru"><span>.</span> <span>Потому что мы не работаем над ними напрямую. Мы создаем копию и продолжаем работать с ней, не касаясь исходных значений.</span></span></p> - -<h2 id="Обертки_примитивных_типов_в_JavaScript">Обертки примитивных типов в JavaScript</h2> - -<p>За исключением <code>null</code> и <code>undefined</code>, все примитивные значения имеют объектный аналог, который оборачивает значение примитивного типа:</p> - -<ul> - <li>{{jsxref("String")}} для string примитива.</li> - <li>{{jsxref("Number")}} для number примитива.</li> - <li>{{jsxref("Boolean")}} для Boolean примитива.</li> - <li>{{jsxref("Symbol")}} для Symbol примитива.</li> -</ul> - -<p>Метод <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf"><code>valueOf()</code></a> типа обертки возвращает значение примитивного типа.</p> - -<h2 id="См._также">См. также</h2> - -<h3 id="Общие_сведения">Общие сведения</h3> - -<ul> - <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures">Введение в типы данных JavaScript</a></li> - <li> <a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF">Примитивный тип</a> на Wikipedia</li> -</ul> |