aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/call_stack/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/glossary/call_stack/index.html')
-rw-r--r--files/ru/glossary/call_stack/index.html102
1 files changed, 102 insertions, 0 deletions
diff --git a/files/ru/glossary/call_stack/index.html b/files/ru/glossary/call_stack/index.html
new file mode 100644
index 0000000000..04eb95fdb5
--- /dev/null
+++ b/files/ru/glossary/call_stack/index.html
@@ -0,0 +1,102 @@
+---
+title: Call stack
+slug: Словарь/Call_stack
+tags:
+ - Glossary
+translation_of: Glossary/Call_stack
+---
+<p><strong>Стек вызовов(call stack) </strong>- это механизм для интерпретаторов (таких как интерпретатор JavaScript в веб-браузере) для отслеживания текущего местонахождения интерпретатора в скрипте, который вызывает  несколько функций типа {{glossary("function","functions")}}, — какая из функций выполняется на данный момент, какие функции вызываются изнутри этой (выполняемой) функции, какая будет вызвана следующей и т. д.</p>
+
+<ul>
+ <li>Когда скрипт вызывает функцию, интерпретатор добавляет ее в стек вызовов и потом начинает ее обработку.</li>
+ <li>Любые функции, вызванные этой функцией, добавляются в  стек вызовов и выполняются, как только происходит их вызов. </li>
+ <li>Когда выполнение основной функции завершено, интрепретатор снимает ее со стека вызовов и возобновляет выполнение кода в списке основного кода с той точки, где остановился до этого.</li>
+ <li>Если стек занимает больше места, чем ему было присвоено, это приводит к ошибке переполнения стека ("stack overflow" error).</li>
+</ul>
+
+<h2 id="Пример">Пример</h2>
+
+<p> </p>
+
+<pre class="brush: js">function greeting() {
+ // [1] Some codes here
+ sayHi();
+ // [2] Some codes here
+}
+function sayHi() {
+ return "Hi!";
+}
+
+// Invoke the `greeting` function
+greeting();
+
+// [3] Some codes here</pre>
+
+<p>Код выше будет выполнен следующим образом:</p>
+
+<ol>
+ <li>Игнорирование всех функций, пока не будет достигнуто место вызова функции <code>greeting()</code>.</li>
+ <li>Вызывается функция <code>greeting().</code></li>
+ <li>Функция "greeting" помещается в очередь стека вызовов.</li>
+</ol>
+
+<div class="note">
+<p>Очередь стека вызовов:<br>
+ - greeting</p>
+</div>
+
+<p> </p>
+
+<ol start="4">
+ <li>Выполняется код внутри функции `greeting`.</li>
+ <li>Вызывается функция <code>sayHi()</code>.</li>
+ <li>Функция <code>sayHi()</code> помещается в очередь стека вызовов.</li>
+</ol>
+
+<div class="note">
+<p>Очередь стека вызовов:<br>
+ - greeting<br>
+ - sayHi</p>
+</div>
+
+<ol start="7">
+ <li>Выполняется весь код внутри функции <code>sayHi()</code> до самого конца.</li>
+ <li>Возврат выполнения кода  с места вызова функции <code>sayHi()</code> и продолжение выполнения оставшегося кода функции <code>greeting()</code>.</li>
+ <li>Выполненная функция <code>sayHi()</code> удаляется из очереди стека вызовов.<br>
+
+ <div class="note">
+ <p>Очередь стека вызовов:<br>
+ - greeting</p>
+ </div>
+ </li>
+ <li>Когда весь код внутри функции <code>greeting()</code> выполнен, происходит возврат выполнения оставшейся части основного скрипта JS с места вызова функции <code>greeting()</code>.</li>
+ <li>Выполненная функция <code>greeting()</code> удаляется из очереди стека вызовов.<br>
+
+ <div class="note">
+ <p>Очередь стека вызовов:<br>
+ ПУСТО</p>
+ </div>
+ </li>
+</ol>
+
+<p>Выполнение кода началось с пустого стека вызовов, и всякий раз, когда мы вызывали функцию, она автоматически добавлялась в очередь стека вызовов, после выполнения всего своего кода она автоматически удалялась из очереди стека вызовов. И в конце выполнение кода также завершилось с пустым стеком вызовов.</p>
+
+<h2 id="Узнать_больше">Узнать больше</h2>
+
+<h3 id="Общие_знания">Общие знания</h3>
+
+<ul>
+ <li>{{Interwiki("wikipedia", "Call stack")}} на Википедии</li>
+</ul>
+
+<section id="Quick_Links">
+<ul>
+ <li><a href="/ru/docs/Glossary">MDN Web Docs Glossary</a>
+
+ <ul>
+ <li>{{Glossary("Call stack")}}</li>
+ <li>{{Glossary("Function")}}</li>
+ </ul>
+ </li>
+</ul>
+</section>