2012-09-17 41 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方法。

我希望你现在明白了。