2012-09-17 42 views
0

我想要更好地學習JavaScript,並且在查看Node.js模塊源代碼時,我遇到了Path.js模塊中的嵌套函數。Node.js模塊代碼說明? Path.js trim(arr){}

我已經基本確定,它是用來做一些陣列路徑的「清理」,但仍只是不能「類人猿」它確實在做什麼...誰能解釋一下嗎?

這裏是鏈接到模塊:https://github.com/joyent/node/blob/master/lib/path.js

function trim(arr) { 
     var start = 0; 
     for (; start < arr.length; start++) { 
     if (arr[start] !== '') break; 
     } 

     var end = arr.length - 1; 
     for (; end >= 0; end--) { 
     if (arr[end] !== '') break; 
     } 

     if (start > end) return []; 
     return arr.slice(start, end - start + 1); 
    } 

這是嵌入了POSIX版的 「export.relative」 功能中。

如果有人能幫助我理解這一點,它可能會緩解我心中有點...

回答

0

什麼這個函數的作用是,它消除了從一開始就和給定數組的結尾空字符串值。如果您撥打trim(['', '', 1, 2, '']),您會收到[1, 2]

它首先通過檢查從一開始第一(從索引0)空字符串值。然後它執行相同的檢查,但從結尾開始(從arr.length-1這是數組中最後一個索引的索引)開始並向後退出。

的檢查是遇到非空字符串值時停止。

如果start > end則沒有非空字符串值並且因此安全返回一個空數組。

如果有應(在我的例子像圖1和2)被保留一些陣列元件,陣列,僅僅通過它slice方法修整。例如,slice方法對應於String::substr方法。

我希望你現在明白了。