JavaScript の質問用スレッド vol.126 (307レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
285: デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) [sage] 2025/01/27(月) 20:38:29.10 ID:DmLoR8Bu0(1/5) AAS
>>284284(1): やっぱ過疎化防止で、また来ちゃった (ワッチョイ deaf-opVO [2400:2200:438:4658:*]) [] 2025/01/27(月) 06:54:39.55 ID:/Hv0VvQW0(1) AAS
ふと、どうでもヨイ疑問が湧いた。
for(let t=1000; t<=3000; t+=1000){
setTimeout(function() {
console.log(t/1000)}, t)
}
と、
for(let n=1; n<=3; n+=1){
setTimeout(function() {
console.log(n)}, 1000*n)
}
どっちも問題はないけど・・・
どっちが見やすい?。
誤差とかわかり易さとかの観点で
てか、どっち に しようかな。
てか、どっち の 仕様がいいのかな。
てか、どっち を 使用しようかな
ChatGPTに聞いてみたけど、全部は掲載できないので結論だけ転載
1. 「時間」を基準にして明示的に処理を進めたいなら t
2. 「ループ回数」を基準にするのが直感的なら n
個人的にはtの方が汎用性が高く、特に時間管理が重要なケースでは使いやすいと思います。
286: デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) [sage] 2025/01/27(月) 20:44:15.26 ID:DmLoR8Bu0(2/5) AAS
1. 可読性
tを使ったコードでは、時間そのもの(1000, 2000, 3000)が直接書かれており、「時間に基づいた処理」という意図が明確。
一方、nを使ったコードでは、「ループの回数を基準に処理」していることが読み取れる。
一般的には、「時間を意識した処理」ならt、「回数を意識した処理」ならnを使ったほうが直感的です。
287: デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) [sage] 2025/01/27(月) 20:44:38.45 ID:DmLoR8Bu0(3/5) AAS
2. 精度と誤差
setTimeoutは指定した時間で必ず正確に実行されるわけではなく、若干の誤差が発生します。どちらもこの点においては同じですが、**tの方が「時間の計算結果が直接書かれているため誤差の発生ポイントが少ない」**という印象を受けます。
例えば:
1000 * n // 計算で導出
1000, 2000, 3000 // そのまま指定
上記の違いから、誤差を気にするならtの方が直接的で分かりやすいです。
288: デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) [sage] 2025/01/27(月) 20:46:35.01 ID:DmLoR8Bu0(4/5) AAS
3. メンテナンス性
tのコード
時間間隔を変更したい場合、初期値・上限値・増加値だけを変更すればよく、スケール感の変更がしやすい。
nのコード
「1000を掛ける」という計算式が直接書かれているため、変更時に計算式部分にも目を配る必要がある。
291: デフォルトの名無しさん (ワッチョイ de4b-OnvR [183.176.68.229 [上級国民]]) [sage] 2025/01/27(月) 21:56:48.37 ID:DmLoR8Bu0(5/5) AAS
いや、質問をそのままGPTにペーストしたよ
利用者の意見なんて1つも入れてない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s