タイトル通りなのですが、Settimeoutなどの関数で戻り値を取得していればそのIDを使ってcleartimeout出来る事と思います。
javascript
1let timerId = setInterval(func , 1000) 2clearInterval(timerId)
しかし戻り値を取得しなかった場合にあってもまったく止められなくなってしまう事はないと思い、window要素などどこかしらに保存されているのでは?と思いました。
初歩的な質問かもしれませんが分かる方がいらっしゃったらご教示お願いいたします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
どこにも保存されません。
投稿2019/06/07 03:15
総合スコア36072
0
しかし戻り値を取得しなかった場合にあってもまったく止められなくなってしまう事はない
基本的には止められません(他の方が挙げているように、でたらめな番号で運良く止まるのを狙うなら話は別ですが)。
投稿2019/06/07 03:58
総合スコア145183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
timerIdは単なるユニークな整数値なので当てずっぽうで止めることはできます。
逆に言えば発行時に受けなければ任意に探すことはできません
sample
javascript
1setTimeout(function(){console.log("x")},100); 2setTimeout(function(){console.log("y")},200); 3setTimeout(function(){console.log("z")},300); 4clearTimeout(3);
※状況によって何が止まるかは不定
投稿2019/06/07 03:17
編集2019/06/07 03:21総合スコア114759
0
変数に返り値を格納しなかった時ということですね・・・。
勘違いしてました・・・。
止められるかどうかは、他の回答者の方の回答や、私の元回答で解決できるかと思うので、
setIntervalがなんぞやってところで、回答修正いたします。
windowオブジェクトに繰り返す関数群が保存されるとかではなく、
Web application APIというもので繰り返しが実行されているため、
windowオブジェクトは、その存在時点でAPIを使用した後にできているオブジェクトなので、
APIである以上、JavaScript側では、API元のコントロールはできない、中身を覗くことはできない、ということかと思います。
(間違っていたらすみません。ご指摘いただいたら、修正します)
公式の日本語訳ではないようですが、以下の記事が非常に参考になるかと思います。
HTML Standard — Web application APIs(日本語訳)
また、MDNの記事も大変参考になると思います。
WindowOrWorkerGlobalScope.setInterval() - Web API | MDN
WindowOrWorkerGlobalScope - Web API | MDN
PHPから提供されたAPIの中身を、JavaScript側から覗くことはできないように、
APIの使用先である、JavaScriptからでは、APIの中身は当然確認することができません。
(意図的に覗けるようにしていれば、覗ける)
よって、windowオブジェクトのどこを探しても、setIntervalないし、setTimeoutで定義した、
繰り返しさせている関数は見つかりません。
語弊があるので追記ですが、
今回の質問のように、funcは、JavaScript定義の変数かと思いますので、
func変数自体は、window内に当然あります。
見つからないというのは、あくまで、タイマーで実行している、仕組みの中での、
関数群、です。
(言い方が難しい)
--------- 以下元回答 --------
Lhankor_Mhyさんのおっしゃる通り、
どこかに保存はされませんが、
変数として格納はされます。
しかし、letの場合、(記述の仕方によってはvarでも)windowではなく、記述ブロックのスコープ変数として格納されます。
(ルートに書けば、windowに格納される)
というか、console.log(timerId)
ってやって、中身見たら、正体がわかるかと思いますが。
今回の場合なら、clearInterval(1)
でもクリアできます。
ちなみに、window要素と言うと、HTMLの<window>タグ?と勘違いされるので、
windowオブジェクトと言った方がいいかと。
投稿2019/06/07 03:29
編集2019/06/07 05:22総合スコア9528
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/10 06:23