Ðе ÑÑандаÑÑно: ÐÑа ÑÑнкÑÐ¸Ñ Ð½Ðµ ÑÑандаÑÑизиÑована. ÐÑ Ð½Ðµ ÑекомендÑем иÑполÑзоваÑÑ Ð½ÐµÑÑандаÑÑнÑе ÑÑнкÑии в дейÑÑвÑÑÑÐ¸Ñ Ð¿ÑоекÑÐ°Ñ , Ñак как Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑжка бÑаÑзеÑами огÑаниÑена, а поведение Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð¸Ð»Ð¸ бÑÑÑ Ñдалено. Тем не менее, в некоÑоÑÑÑ ÑлÑÑаÑÑ , когда Ð½ÐµÑ ÑÑандаÑÑного ÑеÑениÑ, они могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑей алÑÑеÑнаÑивой.
СводкаÐеÑÑандаÑÑное ÑвойÑÑво stack
обÑекÑа Error
возвÑаÑÐ°ÐµÑ ÑÑаÑÑиÑÐ¾Ð²ÐºÑ ÑÑека вÑзÑваемÑÑ
ÑÑнкÑий в поÑÑдке иÑ
вÑполнениÑ, вмеÑÑе Ñ Ð½Ð¾Ð¼ÐµÑами ÑÑÑок, именами Ñайлов и аÑгÑменÑами. СÑÑока Ñо ÑÑеком заполнÑеÑÑÑ Ð¾Ñ ÑамÑÑ
недавниÑ
вÑзовов до вÑзова из глобалÑной облаÑÑи видимоÑÑи.
ÐаждÑй Ñаг наÑ
одиÑÑÑ Ð½Ð° оÑделÑной ÑÑÑоке; пеÑÐ²Ð°Ñ ÑаÑÑÑ ÑÑÑоки ÑодеÑÐ¶Ð¸Ñ Ð¸Ð¼Ñ ÑÑнкÑии (еÑли ÑÑо не вÑзов из глобалÑной облаÑÑи видимоÑÑи), заÑем знак Ñобаки (@
), меÑÑоположение Ñайла (кÑоме ÑлÑÑаÑ, когда ÑÑнкÑÐ¸Ñ ÑвлÑеÑÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑом оÑибки, коÑоÑÑÑ Ð¾Ð½Ð° вÑбÑаÑÑваеÑ), двоеÑоÑие и, еÑли еÑÑÑ Ð¼ÐµÑÑоположение Ñайла, Ð½Ð¾Ð¼ÐµÑ ÑÑÑоки. ÐбÑаÑиÑе внимание, ÑÑо обÑÐµÐºÑ Error
Ñакже Ð¾Ð±Ð»Ð°Ð´Ð°ÐµÑ ÑвойÑÑвами fileName
, lineNumber
и columnNumber
, позволÑÑÑими извлеÑÑ Ð¸Ð¼Ñ Ñайла, Ð½Ð¾Ð¼ÐµÑ ÑÑÑоки и ÑÑолбÑа из вÑбÑоÑенной оÑибки (но ÑолÑко Ñамой оÑибки, а не вÑего ÑÑека вÑзовов).
ÐбÑаÑиÑе внимание, ÑÑо Ñакой ÑоÑÐ¼Ð°Ñ Ð¸ÑполÑзÑеÑÑÑ Ð² Firefox. ÐÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð³Ð¾ «ÑÑандаÑÑного ÑоÑмаÑа». Ðднако, Safari 6+ и Opera 12- иÑполÑзÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ñ
ожий ÑоÑмаÑ. С дÑÑгой ÑÑоÑонÑ, бÑаÑзеÑÑ, иÑполÑзÑÑÑие движок JavaScript V8 (напÑимеÑ, Chrome, Opera 15+, ÐÑаÑÐ·ÐµÑ Android) и IE10+, иÑполÑзÑÑÑ Ð´ÑÑгой ÑоÑÐ¼Ð°Ñ (ÑмоÑÑиÑе ÑÑÑ ÑÑаÑÑÑ Ð¿Ð¾ error.stack
в MSDN).
ÐнаÑÐµÐ½Ð¸Ñ Ð°ÑгÑменÑов в ÑÑеке: до Firefox 14 (Firefox bug 744842) за именем ÑÑнкÑии и пÑÑмо пеÑед знаком Ñобаки (@
) в кÑÑглÑÑ
ÑкобкаÑ
Ñледовали знаÑÐµÐ½Ð¸Ñ Ð°ÑгÑменÑов, пÑеобÑазованнÑе в ÑÑÑоки. ХоÑÑ Ð¾Ð±ÑекÑÑ (или маÑÑÐ¸Ð²Ñ Ð¸ пÑоÑее) пÑеобÑазовÑвалиÑÑ Ð² ÑоÑÐ¼Ñ "[object Object]"
, и, Ñаким обÑазом, невозможно бÑло ÑзнаÑÑ Ð¸Ñ
ÑодеÑжимое, ÑкалÑÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³Ð»Ð¸ бÑÑÑ Ð¸Ð·Ð²Ð»ÐµÑÐµÐ½Ñ (ÑÑо вÑÑ ÐµÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð² Firefox 14 â однако пÑоÑе Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð°ÑгÑменÑов иÑполÑзоваÑÑ arguments.callee.caller.arguments
, а Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑÑнкÑии â arguments.callee.caller.name
). ÐнаÑение "undefined"
показÑвалоÑÑ ÐºÐ°Ðº "(void 0)"
. ÐбÑаÑиÑе внимание, ÑÑо еÑли ÑÑÑоковÑе аÑгÑменÑÑ ÑодеÑжали знаÑениÑ, вклÑÑаÑÑие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ "@"
, "("
, ")"
(или еÑли они вклÑÑали имена Ñайлов), вам не Ñак Ñо пÑоÑÑо бÑло ÑазбиÑÑ ÑÑÑÐ¾ÐºÑ Ð½Ð° ÑоÑÑавнÑе ÑаÑÑи. Таким обÑазом, в Firefox 14 и более поздниÑ
веÑÑиÑÑ
ÑÑо пеÑеÑÑало бÑÑÑ Ð¿Ñоблемой.
СледÑÑÑÐ°Ñ ÑазмеÑка HTML демонÑÑÑиÑÑÐµÑ Ð¸ÑполÑзование ÑвойÑÑва stack
.
<!doctype html>
<meta charset="UTF-8" />
<title>ÐÑÐ¸Ð¼ÐµÑ ÑÑаÑÑиÑовки ÑÑека</title>
<body>
<script>
function trace() {
try {
throw new Error("ÐÐ¾Ñ Ð¾Ñибка");
} catch (e) {
alert(e.stack);
}
}
function b() {
trace();
}
function a() {
b(3, 4, "\n\n", undefined, {});
}
a("пеÑвÑй вÑзов, пеÑвÑй аÑгÑменÑ");
</script>
</body>
ÐÑедполагаеÑÑÑ, ÑÑо ÑазмеÑка вÑÑе ÑоÑ
Ñанена как C:\example.html
в Ñайловой ÑиÑÑеме Windows. Ðна вÑÐ²Ð¾Ð´Ð¸Ñ ÑледÑÑÑий ÑекÑÑ Ð² диалоговом окне:
ÐаÑÐ¸Ð½Ð°Ñ Ñ Firefox 30 и более Ð¿Ð¾Ð·Ð´Ð½Ð¸Ñ Ð²ÐµÑÑий, вÑвод ÑодеÑÐ¶Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ (Firefox bug 762556):
trace@file:///C:/example.html:9:17 b@file:///C:/example.html:16:13 a@file:///C:/example.html:19:13 @file:///C:/example.html:21:9
Ñ Firefox 14 по Firefox 29:
trace@file:///C:/example.html:9 b@file:///C:/example.html:16 a@file:///C:/example.html:19 @file:///C:/example.html:21
Firefox 13 и более Ñанние веÑÑии вÑводÑÑ ÑледÑÑÑий ÑекÑÑ:
Error("ÐÐ¾Ñ Ð¾Ñибка")@:0 trace()@file:///C:/example.html:9 b(3,4,"\n\n",(void 0),[object Object])@file:///C:/example.html:16 a("пеÑвÑй вÑзов, пеÑвÑй аÑгÑменÑ")@file:///C:/example.html:19 @file:///C:/example.html:21СÑек кода в ÑÑнкÑии
eval()
ÐаÑÐ¸Ð½Ð°Ñ Ñ Firefox 30, ÑÑек вÑзовов кода в вÑзоваÑ
Function()
и eval()
даÑÑ Ð±Ð¾Ð»ÐµÐµ подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ номеÑе ÑÑÑоки и колонки внÑÑÑи ÑÑиÑ
вÑзовов. ÐÑÐ·Ð¾Ð²Ñ Function
обознаÑаÑÑÑÑ "> Function"
, а вÑÐ·Ð¾Ð²Ñ eval()
обознаÑаÑÑÑÑ "> eval"
. СмоÑÑиÑе Firefox bug 332176.
try {
new Function("throw new Error()")();
} catch (e) {
console.log(e.stack);
}
// anonymous@file:///C:/example.html line 7 > Function:1:1
// @file:///C:/example.html:7:6
try {
eval("eval('FAIL')");
} catch (x) {
console.log(x.stack);
}
// @file:///C:/example.html line 7 > eval line 1 > eval:1:1
// @file:///C:/example.html line 7 > eval:1:1
// @file:///C:/example.html:7:6
Также Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ÑÑ
одного кода в ÑÑнкÑии eval()
Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð´Ð¸ÑекÑÐ¸Ð²Ñ //# sourceURL
. СмоÑÑиÑе Ñаздел ÐÑладка иÑÑ
однÑÑ
кодов в ÑÑнкÑии eval()
в докÑменÑаÑии по оÑладÑикÑ, а Ñакже ÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² блоге (на английÑком).
Ðе ÑвлÑеÑÑÑ ÑаÑÑÑÑ ÐºÐ°ÐºÐ¾Ð¹-либо ÑпеÑиÑикаÑии. Ðе ÑÑандаÑÑно.
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе ÑакжеRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4