2012-06-05 43 views
0

我對JavaScript很新,但我通常理解大多數我使用的腳本。 今天,我想將moment.js的索姆姆移植到haxe。 但我很這一語法disapointed:js奇怪的括號語法

var args = seconds < 45 && ['s', seconds] || 
      minutes === 1 && ['m'] || 
      minutes < 45 && ['mm', minutes] || 
      hours === 1 && ['h'] || 
      hours < 22 && ['hh', hours] || 
      days === 1 && ['d'] || 
      days <= 25 && ['dd', days] || 
      days <= 45 && ['M'] || 
      days < 345 && ['MM', round(days/30)] || 
      years === 1 && ['y'] || ['yy', years]; 

你可以在這個文件https://github.com/timrwood/moment/blob/master/moment.js#L532

的行號529發現它是什麼的["s", seconds]是什麼意思? 它是一個數組,一個json模式?

Thx的答覆

回答

3

基本上args將與表示時間間隔的一個或兩個元件的陣列。取決於它會以秒,分,小時等來測量。

[「s」,秒]是什麼意思?它是一個數組,一個JSON模式?

這是一個數組定義。

+0

感謝您的回覆! 那麼應該如何看待這些開關之後的參數? 我不明白&&在那種情況下做了什麼。 – postite

+1

這是非常棘手的,我知道:-)如果&&左側的條件爲真,那麼args將被設置爲&&右側的表達式。這裏是一個小提琴嘗試:http://jsfiddle.net/Pharaon/qVA2Y/1/ –

+0

所以它是: if(seconds <45)args = [「s」,seconds] 對不對? – postite