元帥♀大叔♂愛♥
JS 今天的隨堂測驗比較難!閏年判定器! 逃亡計畫
元帥♀大叔♂愛♥
好幾個if...else判斷迴圈!
元帥♀大叔♂愛♥
https://images.plurk.com/2FEg3WmheZQCjWerrz8Msq.png
元帥♀大叔♂愛♥
第一次寫這種if套if (其實以前玩excel也做過 但換一種表達方式就有點文法困難XD)
元帥♀大叔♂愛♥
還有如何美化那些括弧 我好想開槍自盡
元帥♀大叔♂愛♥
JS的章節他每一段影片都講一個範例跟一個概念然後搭配一個隨堂挑戰 節奏很快 一天就可以學兩三個內容
元帥♀大叔♂愛♥
比之前CSS排版的部份節奏快多了
元帥♀大叔♂愛♥
題外話,閏年怎麼會發生的這個他好像預設大家都完全不知道,還提供了一堆參考資料XD
阿茶/敖珂索
預設大家都不知道比較好XD
元帥♀大叔♂愛♥
無意間看到別人的C++教材也有這個例子: https://images.plurk.com/3WrR7eRehi4PwDM1ExlV4Q.png
元帥♀大叔♂愛♥
不過 我看不懂它的符號XD 只知道宣告了一個啥咪 判斷了一個啥咪 不是這個 就是那個 如此這般XDD
pennyfox
你可以直接寫成 (year % 4 === 0 || year % 100 === 0 || year % 400 === 0)
pennyfox
通常是儘可能的把block減少會比較好閱讀
pennyfox
欸 不對 是三連if的話會是(year % 4 === 0 && year % 100 === 0 && year % 400 === 0)
元帥♀大叔♂愛♥
等等 閏年是不能被100整除但可以被400整除
元帥♀大叔♂愛♥
所以1900年可以被4整除也可以被100整除 所以不是閏年
元帥♀大叔♂愛♥
但2000年可被4整除 可被100整除 可被400整除 是閏年
pennyfox
所以說block越多閱讀越困難(茶)
元帥♀大叔♂愛♥
我一開始也想過第一個if先套兩個條件
元帥♀大叔♂愛♥
結果解答是建議大家這樣思考: https://images.plurk.com/26wvrMxXtbYOMNqRMHLkta.jpg
元帥♀大叔♂愛♥
我再多看了一眼C++範例
元帥♀大叔♂愛♥
他只判斷出「符合閏年條件」
費拉諾蘭大公
你得到他了
元帥♀大叔♂愛♥
所以要嘛是被400整除 或者是 能被4且不能被100整除
元帥♀大叔♂愛♥
先判斷400整除這個比較高明耶
元帥♀大叔♂愛♥
不能被400整除的 再套一個條件就能分出來閏年或平年
費拉諾蘭大公
在一個if裡面用or結合條件就好,or是由左而右依序判斷條件,只要符合就返回true,不會繼續運算
費拉諾蘭大公
有千年跟四千年的規則嗎?
元帥♀大叔♂愛♥
就那三條啊
費拉諾蘭大公
if (y % 400==0 || (y % 4==0 && y % 100 !=0)) { is_leap_year(); }
元帥♀大叔♂愛♥
各位大帥哥大美女: https://images.plurk.com/5QZ3bUnEfKyKXzbW0cxb37.png
元帥♀大叔♂愛♥
幹,這是藝術!藝術啊!(顫抖)
元帥♀大叔♂愛♥
pennyfox
還可以更簡短
let isLeapYear = (year) => { return (year % 400 === 0 || year % 4 === 0 && year % 100 !== 0) ? "Leap Year" : "Not Leap Year" };
元帥♀大叔♂愛♥
pennyfox : 等一下 這超出了我的程度
元帥♀大叔♂愛♥
我還不會let是啥咪 還有那個問號!
元帥♀大叔♂愛♥
趕快自力救濟一下:
Conditional (ternary) operator
元帥♀大叔♂愛♥
突然覺得自己的code有一種老派的風味(不 XD
元帥♀大叔♂愛♥
BetterMove
口訣: 四年一潤 百年不潤 四百年又潤
元帥♀大叔♂愛♥
自力救濟3
let
BetterMove
條件最嚴苛的放最前面
pennyfox
其實arrow function可以不用寫return 囧"
我老是會忘記...
let isLeapYear = (year) => (year % 400 === 0 || year % 4 === 0 && year % 100 !== 0) ? "Leap Year" : "Not Leap Year";
pennyfox
let 跟 var的分別是我們面試的考題之一 XD
元帥♀大叔♂愛♥
雖然自力救濟了但還是不太懂global宣告是啥 >< 昨天大公有稍微解釋但我沒得到它
pennyfox
技術上來說var是function scope let是block scope
載入新的回覆