三項演算子ですね。
diffという変数の有無を除けば、以下コードと同等です。
if (day) {
const diff = 1 - day;
} else {
const diff = -6;
}
start.setDate(start.getDate() + diff);
jsでは日曜が0なので、月〜土の場合はif(day)
、日の場合はelse
になります。
つまり計算結果は直前の月曜日の日付になります。
Like!
JavaScript の関数で引数に、年、月、週番号で
その週の開始日と終了日の関数を作っています。
下記の関数をあるサイトで見つけたのですが
分からない部分があります。
function getStartDsyOfMonth(year, month, weekNumber) {
let start = new Date(year, month - 1, (weekNumber - 1) * 7 + 1);
let day = start.getDay();
start.setDate(start.getDate() + (day ? 1 - day : -6));
let end = new Date(start);
end.setDate(end.getDate() + 6);
return { start: start, end: end }
}
の 「(day ? 1 - day : -6)」の部分は何をやっているのでしょうか?
どなたか解説お願いします。
start.setDate(start.getDate() + (day ? 1 - day : -6));
三項演算子ですね。
diffという変数の有無を除けば、以下コードと同等です。
if (day) {
const diff = 1 - day;
} else {
const diff = -6;
}
start.setDate(start.getDate() + diff);
jsでは日曜が0なので、月〜土の場合はif(day)
、日の場合はelse
になります。
つまり計算結果は直前の月曜日の日付になります。