2012-07-07 29 views
0

我得到這個代碼從一本書,我不明白這是如何聲明「MM =月[毫米]」轉換爲一個月的名稱字符串:的JavaScript - 轉換成字符串中使用數組索引

function init(){ 
    var panel = document.getElementById("panel"); 

    var days=["sun","mon","tue","wed","thur","fri","sat"]; 
    var months=["jan","feb","mar","apr","may","jun", 
    "jul","aug","sep","oct","nov","dec"]; 

    var now = new Date(); 

    var yy = now.getFullYear(); 
    var mm = now.getMonth(); 
    var dd = now.getDate(); 
    var dy = now.getDay(); 

    mm=months[mm]; //convert to month name string 
    dy=days[dy]; //convert to month name string 

    var str = dy+","+mm","+dd+","+yy; 
    panel.innerHTML+="us date string: "+str; 
    str = dy+","+dd+" "+mm+","+yy; 
    panel.innerHTML+="<br>uk date string: "+str; 
} 
window.onload=init(); 

我的問題這是什麼mm=months[mm]dy=days[dy](轉換爲月份或日期名稱字符串)的確如此。我不明白當month是一個數組時,這個語句「mm = months [mm]」如何轉換爲月份名字符串。這只是一些數組的功能?

+4

它不轉換。它將**索引**引入數組並返回相應的值。重複使用相同的變量令人困惑。 '天[0]' - >「太陽」,例如 – 2012-07-07 20:55:52

+0

'從書'我認爲在線免費教程是非常好的。但這只是我的想法。 – Mageek 2012-07-07 21:19:03

回答

2

mm是語句mm=months[mm]開頭的數字,因此它返回months數組中的mm th值,該數組是字符串。在JavaScript中,變量不是嚴格鍵入的,因此它會將此字符串插入變量中。mm

+1

現在得到它,所以基本上毫米就像11如果你把它放在數組索引會給你十二月 – dotmax 2012-07-07 21:00:12

+0

這就是它:) – jaypeagi 2012-07-07 21:00:32

0

mm是一個從0-11開始的數字,表示特定於您檢索日期對象的月份。 months是一個包含所有月份名稱的數組。如果您說mm = months[mm],則表示mm等於months陣列中位置mm處的字符串。這很令人困惑,因爲它們使用相同的變量名稱。它可能是更好的做這樣的事情:

var mm = now.getMonth(); 
alert(mm); // will alert 6 
var monthName = months[mm]; // will alert July, which is position 7 in the months array 

原因mm爲六是因爲某種原因月份是0指數的,這意味着他們從0開始,到11; 1月將是0和12月11日。

0

days是一個數組。給定索引dy=0days[dy]返回"sun",這是數組中的第0個值。同樣,給定索引dy=1days[dy]返回"mon",這是數組中的第一個值。等等。

months的相同概念。

但正確的答案應該是「在Javascript或jQuery中使用一些內置函數」。有關更多詳細信息,請參閱此post。從長遠來看,自己的日期時間轉換功能幾乎肯定會回來並咬你。

0

假定日期爲08,月份爲7月。

var yy = now.getFullYear(); 
var mm = now.getMonth(); // month is 7 now 
var dd = now.getDate();  // dd is 8 now 
var dy = now.getDay(); 

現在,

mm=months[mm]; 

手段,

mm = months[7];

// in months array, at seventh index we have july,

所以毫米爲七月。

沒有它的轉換,但使用基於索引的數組中的值。

0

mm=month[mm]months數組中取(由now.getMonth()返回)索引處的值,並將其放入mm變量中。該編號與dy=days[dy]相同。

我認識到代碼寫得不好。 (而不是「新」mm)之後應寫爲mm2=month[mm]並使用mm2

+0

@airDex但它可以節省內存... – Mageek 2012-07-07 21:13:56

+0

@Mageek *咳嗽*廢話*咳嗽* (儘管我會使用比'mm2'更具描述性的描述。) – 2012-07-07 21:15:52

+0

@Mageek:我完全同意你的看法,但是它更易於理解代碼的工作原理。好的做法也很重要。 – 2012-07-08 00:29:18

相關問題