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

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

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

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

Q&A

解決済

1回答

302閲覧

javascriptで簡単なストップウォッチにつくるのに、わからないところがあります

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2018/11/25 10:29

編集2018/11/25 10:31
(function(){ 'use strict'; var start = document.getElementById('start') var stop = document.getElementById('stop') var startTime; var isStarted = false; start.addEventListener('click', function(){ if(isStarted === true){ return; } isStarted = true; startTime = Date.now(); console.log(startTime); }); stop.addEventListener('click', function(){ var elapsedTime; if(isStarted === false){ return; } isStarted = false; elapsedTime = (Date.now() - startTime) / 1000; console.log(elapsedTime); }); })();

「startボタン」と「stopボタン」で簡単なストップウォッチをコンソールに表示させるコードです。

「start」をクリックする前に「stop」を押すとコンソールに「NaN」と表示されるので、
それをさせないように、7行目に「var isStarted = false;」というクローバル変数を定義しているのですが
この7行目の変数に false をつけずに「var isStarted;」としてしまうと、
最初の一回目に「stopボタン」を押すと「NaN」が表示されます。

これはどういう理屈でそうなるのでしょうか?
7行目のグローバル変数で、「false」の値を入れなくても、23行目で「isStarted = false;」としているので、
「stopボタン」を押した時にリターンされるのではないかと思うのですが、
何故、最初に「var isStarted = false;」と定義する必要があるのでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if(isStarted === false) では isStartedundefined のときにtrueになりません。

【JavaScript 忘れがちな === と == の違い - Qiita】
https://qiita.com/PianoScoreJP/items/e43d70ec188c6fed73ed

【[JavaScript] null とか undefined とか 0 とか 空文字('') とか false とかの判定について - Qiita】
https://qiita.com/phi/items/723aa59851b0716a87e3

投稿2018/11/25 10:37

kei344

総合スコア69407

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

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

退会済みユーザー

退会済みユーザー

2018/11/25 11:00

すいません、単純な勘違いをしていました。 スタートボタンは連続でクリックしても2回目以降は無効にするという設定でした(^^; そして、ストップボタンは、スタートボタンがクリックされる前に、ストップボタンを ボタンをクリックしても無効にして、かつ、連続でクリックしても2回目以降は無効にするというものでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問