【JavaScript】JavaScript文脈の「stack overflow」とは([JavaScript] What is "stack overflow" in JavaScript context?)
stackについて調べていたらstack overflowという言葉に出会しました。
ぼんやり知っていたのですが、今回改めて深く理解しようと努めました。
「stack overflow」という名前はプログラマーの質問投稿サービスが一番最初に思いつきます。
JavaScript文脈でそれを検索しようとすると、全然辿りつきません。
全てサービス名のStack overflowなのです。
そんなたくさんの落ち葉の中から見つけた一つの三つ葉がこちらです
When I was researching stack, I came across the word stack overflow.
I knew it vaguely, but this time I tried to gain a deeper understanding.
The name "stack overflow" comes first from the programmer's question posting service.
When I try to search for it in the JavaScript context, I can't reach it at all.
All of them are Stack overflow of service name.
Here is one of the three leaves that I found among such many fallen leaves.
If the stack takes up more space than it had assigned to it, it results in a "stack overflow" error.
https://developer.mozilla.org/en-US/docs/Glossary/Call_stack
まずStack Callから
コールスタックは、複数呼び出すスクリプトにその場所を追跡する(WebブラウザでJavaScriptインタープリタのような)インタプリタのための仕組みである機能を現在実行し、どのような機能をなど、その関数内から呼び出されているものの機能- 。
スクリプトが関数を呼び出すと、インタープリターはそれを呼び出しスタックに追加し、関数の実行を開始します。
その関数によって呼び出された関数はすべて呼び出しスタックに追加され、呼び出しが到達した場所で実行されます。
現在の関数が終了すると、インタプリタはそれをスタックから取り出し、最後のコードリストで中断したところから実行を再開します。
スタックが割り当てられていたよりも多くのスペースを占める場合、「スタックオーバーフロー」エラーが発生します。
上記ページの意訳です
ブラウザごとに定義されている最大コールスタック数を超えたとき、エラーが出る
関数から関数を呼び出している状態が続く。再帰的な呼び出し状態のとき。
ループしているときにでる
// Uncaught RangeError: Maximum call stack size exceeded
// InternalError: too much recursion
実際出したコードはこちら(Example stack overflow)
console.logを確認してください
このようになっています
var i = 0;
function recurse() {
i++;
recurse();
}
recurse();
呼び出し元の関数を中で呼びました。
まとめ
stack overflowは簡単に言うと、
わたし(ブラウザ)は
「もうそれ以上一気に食べれない」
というイメージです
もしくは
調べ物を調べていたらさらに知らない言葉が出てきて、それを調べていたらさらに知らない言葉が出てきてそれを調べていたら....
Engineers look like this when they are researching.#engineers pic.twitter.com/vpQGZrxSbf
— 首から下がイケメン (@bukotsunikki) April 26, 2020
では~
「武骨日記の」プライバシーポリシーに関して
・プライバシーポリシー
・個人情報取り扱いに関して
・サイトTOP
・私は何者か
・29歳よしもと芸人がWebデザイナー未経験で学校に通い5年後フリーランスのフロントエンドエンジニアになるためにやった9つのこと
・フロント記事
・フロントエンドエンジニア
・フロントエンド記事(タグ)
・TypeScript
・TypeScript練習問題集
・【TypeScript】TypeSript中級者になる為に知っておくと良い108個のこと
・JavaScript練習問題
・styled-componentsの使い方
・SCSS問題集
・GraphQL「Apollo x Relay-Style-Cursor-Pagination(リレースタイルカーソルページネーション)」
・recomposeと仲良くなりたい
・機動戦士FlowType
・初めてReactNativeWebを触ってみて
・Ramda.jsシグネチャの読み方
・環境変数の話
・いちごタルトの作り方
・フロントエンドエンジニア豚汁の作り方
「武骨日記の」プライバシーポリシーに関して
プライバシーポリシー
株式会社TerraceTechについて
最近起業しました。
・株式会社TerraceTech
SNS
・しずかなインターネット kenjimorita
・インド旅 instagram
・適当な日常写真 instagram
・シュールさーん instagram
・シュールさーん LINEスタンプ
・もりたけんじTwitter
・ネタ帳Twitter
・note
※わたしが結成しているWebチームではWeb未経験者、フリーランスの方へのお仕事を紹介しています。
また個人レッスンしてほしい生徒も募集中です。
もしご興味ある方はチャットからご連絡ください。
※業務連絡やお久しぶり連絡もチャットからお願いします。