今週のおさらいバックナンバーはこちらから
第1号 第2号 第3号 第4号 第5号 第6号 第7号 第8号
第9号 第10号 第11号 第12号 第13号 第14号 第15号 第16号
第17号 第18号 第19号 第20号
第21号 第22号 第23号 第24号
第25号 第26号 第27号 第28号 第29号 目次
今週<第30号>マガジンのおさらい
毎週金曜日配信 What's New 2002/12/6 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 今週の課題 ■ JavaScript講座 第3回
for (n = 1; n <= 20; n++) {
document.writeln(n);
}
構文の分解
for | 繰り返しの命令 |
(n = 1; n <= 20; n++) | 論理式 |
{ 〜 } | ブロック |
n が20になるまでの繰り返しを行います。下記がその実行結果です。
論理式 (初期化式; 条件式; 増減式)
セミコロンで区切られた3つのオプションのステートメントを指定することにより、任意の回数だけブロックをループさせることができます。
初期化式
一般にループカウンタを初期化するために使用し、この式に書かれたステートメントは、ループを回る前に1回だけ実行されます。
条件式
現在の状態を評価するためのステートメントをこの式で書きます。ループを回るたびにこの式は評価され、この式が真(true)である間、ループブロックを繰り返し実行します。評価の結果が偽(false)になった場合は、ループブロックの次の行に制御を移します。
増減式
ループを1度回るたびに実行され、ループカウンタを増加、または減少させます。この値が、条件式で評価されます。
n = 1;
while(n < 21 ) {
document.writeln(n);
n = n + 1;
}
初期値が1の n の値が、20になるまで、ブロックを繰り返します。for構文と異なるのは、論理式を用いずに評価を行います。n < 21 としたのは、n の値が20になったらループを止めてしまいます。また、n の値を増加させるために、ブロック内で n = n + 1 と記述する必要があります。
下記に実行結果を示します。
この構文は、実に多くのスクリプトで使用されており、ある意味では必須の習得構文といえるでしょう。値の条件によって異なるプログラムを実行します。早い話が、もし〜ならば〜であり、さもなくば〜である、という構文です。
var today = new Date();
var h = today.getHours();
if((h > 5) && (h <= 10)) {
document.write("おはよう!");
}
else if((h > 10) && (h < =17)) {
document.write("こんにちは!");
}
else {
document.write("こんばんは!");
}
document.write("ただいま", h , "時です。");
var によって変数を宣言すると、その変数はグローバル変数と呼ばれます。通常、変数はブロックの外で設定されますが、var宣言なしのローカル変数ではブロック内では違うものと解釈されますので、この宣言が必要になってきます。
new Date() は時間や日付などを扱う Dateオブジェクトを利用する場合に用いられます。なお、Dateオブジェクトはこのページの巻末に示しましたので参考までにお読みください。
getHours(); Dateオブジェクトのメソッドの1部で、今の時間を取得するものです。時間を取得して、h という変数に取り込まれます。
if((h > 5) && (h <= 10)) もし、h の値が5以上で10以下ならばブロックを実行します。&& は論理積を示し、「and」という意味を持っています。
else if((h > 10) && (h < =17)) 上記の h の値が5以上で10以下という条件に当てはまらない場合には、ここの構文を参照します。それでも当てはまらない場合には、次の構文に移動します。
Dateオブジェクトの値の範囲
| パラメータ | 範囲 |
|---|---|
| 分、秒 | 0 〜 59 |
| 時間 | 0 〜 23 |
| 曜日 | 0 〜 6 (セット不可) |
| 日 | 1 〜 31 |
| 月 | 0(1月) 〜 11(12月) |
| 年 | 西暦の下2桁 |
Dateオブジェクトのメソッド一覧
| メソッド | 内容 |
|---|---|
| getDate() | 日にち |
| getDay() | 今日の日付 |
| getHours() | 時間 |
| getMinutes() | 分 |
| getSeconds() | 秒 |
| getTimes() | 1970年1月1日 00:00:00 からのms |
| getTimezoneOffset() | タイムゾーン・オフセット(分単位) |
| getYear() | 年 |
| parse(dateString) | 日時を表した dateString をTimesに変換 |
| setDate(dayValue) | オブジェクトの日にちを dayValue に変換 |
| setHours(hoursValue) | オブジェクトの時間を hoursValue に変換 |
| setMinutes(minutesValue) | オブジェクトの分を minutesValue に変換 |
| setMonth(monthValue) | オブジェクトの月を monthValue に変換 |
| setSeconds(secondsValue) | オブジェクトの秒を secondsValue に変換 |
| setTime(timevalue) | オブジェクトの日時を timeValue に変換 |
| setYear(yearValue) | オブジェクトの年を yearValue に変換 |
| toGTMstring() | GTM時間に変換 |
| toLocalstring() | ブラウザの規則に従い、日付の表記フォーマットに変換 |