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

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

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

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

Q&A

解決済

2回答

254閲覧

この仕組みについて教えてください。

haruniku

総合スコア527

JavaScript

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

0グッド

0クリップ

投稿2017/12/16 07:31

編集2017/12/16 07:32

初めまして

javascript初心者です。

質問内容ですが下記の漢数字カウントダウンのロジックがわかりませんのでどなたか解説いただけないでしょうか?
変数の箱を作り、条件分岐で比較しているのは分かりますが、それ以降が全くわかりません。
ご教示の程、宜しくお願いします。

<script> var kansuuji = ["零","壱","弐","参"]; var aaa = 3; var bbb = setInterval(start, 1000); function start() { if (aaa >= 0) { document.write(kansuuji[aaa] + " "); aaa--; }else { clearInterval(bbb); // タイマー停止 document.write("発射!!!"); } } </script>

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

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

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

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

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

guest

回答2

0

ベストアンサー

varは変数でkansuujiは配列です。

javascript

1if (aaa >= 0) { 2 document.write(kansuuji[aaa] + " "); 3 aaa--; 4}

上の処理は、aaaが0以上の値のときはこの処理をしなさいってことなので、
aaaが1や2のときはこの中の処理が実行されます。

document.writeで値が出力されます。
aaaが3のときは配列は0からカウントするので、配列の4番目の参が取り出され、

と出力されます。aaa--;でaaaが1引かれ、aaaは2になります。

aaaが0より小さいときはelseの処理が走り、setIntervalで設定した待ち時間をクリアして

発射!

と出力されます。

関数なので、どこかで

javascript

1start();

と書いてあげれば、ソースコードのどこでも、start()を呼べます。これが関数のメリットです。

投稿2017/12/16 15:40

imamoto_browser

総合スコア1161

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

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

0

js

1var bbb = setInterval(start, 1000);

setIntervalは第1引数に関数、第2引数に間隔(ミリ秒)をとり、関数が指定した間隔で繰り返し呼び出されるようになります。

なのでこの行が実行されると、1000ミリ秒ごとに関数startが実行されるようになります。setIntervalはidのようなものを返し、このidはclearInterval関数に渡して実行することで、この繰り返し実行されるのをストップすることができます。ここではそのidをbbbに格納しています。

startが呼び出される度に何が起きるか順に書いてみると、

  • 1秒後: aaa3なのでaaa >= 0trueとなり、kansuuji[3] + " "つまり"参 "が出力される。aaa2になる。

  • 2秒後: aaa2なのでaaa >= 0trueとなり、kansuuji[2] + " "つまり"弐 "が出力される。aaa1になる。

  • 3秒後: aaa1なのでaaa >= 0trueとなり、kansuuji[1] + " "つまり"壱 "が出力される。aaa0になる。

  • 4秒後: aaa0なのでaaa >= 0trueとなり、kansuuji[0] + " "つまり"零 "が出力される。aaa-1になる。

  • 5秒後: aaa-1なのでaaa >= 0falseとなり、インターバル実行が止まり、"発射!!!"が出力される。

投稿2017/12/16 13:13

編集2017/12/16 13:19
karamarimo

総合スコア2551

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問