1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
---
title: Отладка кода внутри eval
slug: Tools/Debugger/How_to/Debug_eval_sources
tags:
- Отладка
translation_of: Tools/Debugger/How_to/Debug_eval_sources
original_slug: Tools/Debugger/How_to/Отладка_кода_внутри_eval
---
<div>{{ToolsSidebar}}</div><div class="geckoVersionNote">
<p>Доступно, начиная с Firefox 36.</p>
</div>
<p><code><font face="Open Sans, Arial, sans-serif">В Firefox версии 36 или старше доступна отладка кода, выполняемого с помощью </font><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> или конструктора <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function"><code>Function</code></a>.</p>
<p>Чтобы воспользоваться этой возможностью, используйте директиву <code>//# sourceURL </code>: </p>
<pre class="brush: js">var button = document.getElementById("clickme");
button.addEventListener("click", evalFoo, false);
var script = "function foo() {" +
" console.log('called foo');" +
"}" +
"foo();//# sourceURL=my-foo.js";
function evalFoo() {
eval(script);
}</pre>
<p>Такой код присвоит исполняемому скрипту имя "my-foo.js".</p>
<p>Как только скрипт из строки <code>script</code> будет выполнен, он станет доступен в дебаггере как отдельный источник, а также будет доступен к отладке, как код из любого другого источника. Кроме этого, появится возможность, <a href="/ru/docs/Tools/Debugger/How_to/Работа_с_минифицированным_кодом">представить код в удобочитаемом виде</a>:</p>
<p><img alt="" src="https://mdn.mozillademos.org/files/9781/debug-eval-source-url.png" style="display: block; margin-left: auto; margin-right: auto; width: 836px;"></p>
<p>Это имя также будет использоваться в стеке вызовов функций, доступном в <a href="/ru/docs/Tools/Web_Console#Error_messages">веб-консоли</a>.</p>
<p>Начиная с Firefox 40, оператор <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/debugger">debugger;</a></code> также останавливает дебаггер в безымянных источниках выполнения.</p>
|