質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

338閲覧

Date.now()の動きがよくわからない

sushi723

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/09/02 08:17

function CountDown() { setTimeout(function() { TimeLeft = CountTimer - (Date.now() - StartTime); UpdateTimer(TimeLeft); CountDown(); },1000) } var StartTime = Date.now();

CountDown関数は一秒毎に動いていてDate.now()が常に動き続けているのはわかるのですが、それだとDate.now()とStartTimeとの時間差が一秒ずつ増えていって一秒ずつ減って行くのでは?と思っているので
Date.now()がどういう動きをしているのか教えてください。それとこれは一秒ずつ減っていっているかどうか教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/now

Date.now() メソッドは、UTC (協定世界時) での 1970 年 1 月 1 日 0 時 0 分 0 秒 から現在までの経過時間をミリ秒単位で返します。

StartTime = Date.now();

Date.now()の結果をStartTimeに保持しています

(Date.now() - StartTime);

Date.now()の戻り値 - StartTime(保持した値)を引いています。

仮にCountDownが正確に1秒ごとに動いたとするならば
1秒は1000ミリ秒なので
1回目の結果は1000
2回目の結果は2000
と1000ずつ増えます

Timerはさほど正確ではないので、実際はきっちり1秒ごとに動くことはなく若干の誤差がでます。

投稿2017/09/02 08:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

信頼できる資料としてはMDN web docsを参照すると良いかと思います。
Date.now()

Date.now() メソッドは、UTC (協定世界時) での 1970 年 1 月 1 日 0 時 0 分 0 秒 から現在までの経過時間をミリ秒単位で返します。

投稿2017/09/02 08:34

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sushi723

2017/09/02 08:42

回答ありがとうございます。 Date.now()は勝手に増えていくということは TimeLeftが時間が立つごとに減少量が大きくなっていくのでは?と悩んでおります。 一秒毎にDate.nowとStartTimeとの差がどんどん増えていくので一秒ずつ減らないのかということです(説明下手ですみません)
guest

0

TimeLeftが時間が立つごとに減少量が大きくなっていくのでは?

他で StartTime を変化させる処理が働いてなければ、仰る通り、時間経過と共に減少量が増えていきます。

それが何を意味するのか、については伏せられているコードがある以上、確かなことはいえませんが、もし、 StartTime が不変なのであれば、TimeLeft が 0 以下になったときに何かをするコードなのかも知れません。

ところで、「Date.now()の動きがよくわからない」についてはもう解決しているような気がします。

Re: sushi723 さん

投稿2017/09/02 10:02

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問