Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
非標準: この機能は標準化されていません。非標準の機能はブラウザーの対応が限られ、将来的に変更または削除される可能性があるため、本番環境での使用は推奨されません。ただし、標準の選択肢が存在しない特定のケースでは、有効な代替手段となる場合があります。
メモ: stack プロパティは事実上、主要な JavaScript エンジンすべてで実装されており、JavaScript 標準化委員会はこれを標準化しようとしています。実装の不一致によりスタック文字列の正確な内容に依存することはできませんが、一般的に存在すると仮定し、デバッグ目的で使用できます。
stack は Error インスタンスの標準外のプロパティで、呼び出された関数のトレース、つまり、その呼び出し順、呼び出したファイルの行番号、呼び出した関数の引数を提供します。スタック文字列は、最後の呼び出しから最初の呼び出しへ進み、元のグローバルスコープの呼び出しまで遡ります。
文字列です。
stack プロパティは標準外であるため、実装によってその実装先が異なります。
| 書込可能 | 可 |
| 列挙可能 | 不可 |
| 設定可能 | 可 |
それぞれの JavaScript エンジンは独自の形式でスタックトレースを出力しますが、高レベルな構造は概ね一貫しています。すべての実装では、スタック内の各行が個別の関数呼び出しを表します。エラーを直接引き起こした呼び出しは最上部に配置され、呼び出しチェーン全体を開始した呼び出しは最下部に配置されます。以下にスタックトレースの例を示します。
V8 は、スタックトレースをカスタマイズするための標準外のスタックトレース API を提供しています。これにはError.captureStackTrace()、Error.stackTraceLimit、Error.prepareStackTrace() が含まれます。他のエンジンもこの API に様々な程度で対応していましたが、
エンジンによってこの値を設定するタイミングは異なります。ほとんどの現代のエンジンでは、Error オブジェクトが作成された時点で設定されます。つまり、関数内で以下の方法を使用して完全なコールスタック情報を取得できます。
throw したり捕捉したりしません。
スタックフレームは明示的な関数呼び出し以外にも存在します。例えば、イベントリスナー、タイムアウトジョブ、プロミスハンドラーはそれぞれ独自の呼び出しチェーンを開始します。 eval() および Function コンストラクター呼び出し内のソースコードもスタックに現れます。
Firefox では、//# sourceURL ディレクティブを使用して eval ソースに名前を付けることができます。Firefox の eval ソースのデバッグのドキュメントを参照してください。
以下のスクリプトは、stack プロパティを使用してスタックトレースをブラウザーウィンドウに出力する方法を示しています。これにより、ブラウザーのスタック構造がどのように見えるかを確認できます。
仕様書に含まれていません。
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年10月6日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.