前言
在一開始接觸Javasript,想要試圖做出一個小專案的菜雞,一定都會遇到這個令人無語的問題
|
|
當你是一月時,這會回傳0,當你是12月時,你會回傳11,Why? Javascript Why?
抱著無聊的好奇心,我決定來去認真的查一下這個問題
萬惡之源
大家都會說Java跟Javascript的關係猶如臘腸與臘腸狗,除了名字一樣,兩者並沒有任何差距。但知道兩者發展歷史的人應該會知道,這兩個程式語言在歷史的某段時間確實是有一點關係的,而這也是為什麼Javascript的getMonth會是-1的起因之一。
大家都知道Javascript是Brendan Eich 用了十天就創造出來的語言,想當然而,這十天當然不是從無到有,當然是秉持著不自己造輪子,能抄就抄,能用就用的態度,在這種十天老闆就要看到成果的情形下,最現實的結果當然就是
「隨便從什麼語言裡面抓一個Date出來用」
而這個被選中的語言就是Java了
https://twitter.com/BrendanEich/status/481939099138654209
https://twitter.com/BrendanEich/status/771006397886533632
而他引進的版本就是JDK1.0的Date.Util,在那時候
|
|
這東西確實就是會印出當前月份-1的結果(其實到現在Java17依然也是,為了要示範我只找得到1.8版本的JDK了)
隨著Java版本的更迭,已經用新的Calendar來平移getMonth()的方法了,但師承Java的Javascript仍然保留著Java最原汁原味的那一份歷史,
後來Brendan Eich也補充到,從Java import Date的這件事情並不是出自他的手,而是來自於網景一名員工的小巧思
https://twitter.com/BrendanEich/status/771006208949891072
當之後有人在問為什麼Javascript的Month預設都會-1時,你就可以和對方分享這個小故事,並告訴對方寫程式要小心一點,難免你現在寫出來的Bug,在20年後變成大家習以為常的功能了>/////<