31
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初心者向け】Uncaught RangeError: Maximum call stack size exceeded というエラーの意味を一言で説明します【JavaScript】

Last updated at Posted at 2021-03-31

ここだけ読めば おk

Uncaught RangeError: Maximum call stack size exceeded

これは
「処理が無限ループしてますよ」
っていう意味です。

たとえば、関数の中で同じ関数を呼び出すようなコード

function roop(){
  roop(); // 「roop()を実行すると、roop()を実行する」という処理なので無限に終わらない。
}

※ if文などで、きちんとroop()を呼び出さない状況も用意してあげればセーフです。
※ そのように上手にループを活用してる関数は 再帰関数 と呼ばれています。

たとえば、whileやforのループで、終了する条件に永久に合致しないコード

// i の値が null になることはないので、無限に終わらない。
for (let i = 0; i === null; i++) {
  //処理
}
// while 条件式がずっとtrue判定なので、無限に終わらない。
while( true ){
  //処理
}

この記事を書いたあらすじ

メンティーから「表題のエラーが出たからググってみたけど、解説がむずかしすぎてよくわからない」という質問を受けました。
そんな難しい話じゃないのにな〜って思いながら試しにググってみたら、
たしかに、再帰関数がどうとかコールスタックがどうとか、
そこまでの説明求めてないっていうノリの記事がSEOで上位だったので、
Qiitaの力をかりて、このシンプルな説明が勉強中のエンジニアの卵のひとたちに真っ先に届けばいいなーと思いました。

31
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?