私の要点を説明するために、次のコードサンプルがあります。これを Vista の IE8 にロードすると、「Stack Overfow at line:16」というエラーが表示されます。
トップレベルの関数 (testClass オブジェクトの外部) を使用して再帰すると、スタック オーバーフローなしで何百万回も再帰できます。
なぜこうなった?最終的に、再帰を使用する代わりに Function Que を実装しましたが、意味がわかりません。原因を理解したいと思います。
-- コード --
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
<head>
<title>Recusion Test</title>
<body>
</body>
<script type="text/javascript">
function testClass() {
this.x = 15;
this.recurse = function() {
this.x--;
this.recurse();
}
}
var wtf = new testClass();
wtf.recurse();
alert('done');
</script>
</head>
</html>