switchのセレクタの特徴を理解し、switchで指定した年月日を計算するのは本年の数日目です.


switch文の実行ロジック:switchの後ろの括弧の中の変数が後ろの定数と等しいところ(コードブロック)から、命令が終わるまで順番に命令を実行します.Caseの役割:演算に関与するわけではなく、条件判断の役割を果たさず、変数に「リード」を与え、命令を実行する入口番号である.コンピュータにラベルは命令が格納されたアドレスにすぎない.breakはswitch文の内容に属しず、選択構造から飛び出す役割を果たす.
次に、指定された日付が本年の数日目であるコードを計算します.このコードは、switchセレクタの実行ロジックを十分に利用しています.すなわち、変数に基づいてエントリ番号を見つけ、命令が終了するまで順次実行します.では、この機能を実現するには、なぜ月を逆さまに書くのでしょうか.たとえば、6月5日が今年の何日目かを計算するには、前の5ヶ月が過ぎていることが知られています.つまり、日数を計算するときの前の5ヶ月は必ず加算されるので、month-1=5を順番に下に実行し(指定月以下のcaseの日数を加算)、最後に総日数:num+todayを得るにはswitchセレクタの特徴を十分に理解しなければなりません.
var year = Number(prompt("     "));
    var month = Number(prompt("     "));
    var today = Number(prompt("     "));
    var num = 0;
    switch (month - 1){
        case 11:
            num += 30;
        case 10:
            num +=31;
        case 9:
            num += 30;
        case 8:
            num += 31;
        case 7:
            num += 31;
        case 6:
            num += 30;
        case 5:
            num += 31;
        case 4:
            num += 30;
        case 3:
            num += 31;
        case 2:if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
            num += 29;
        }else{
            num += 28;
        }
        case 1:
            num += 31;
    }
    num = num + today;
    alert(num);