2016-07-13 7 views
1

コード:path.joinは、2つの追加のトークン(空の文字列)を返します

var tmp = path.join(os.tmpDir(), dir); 
var segments = tmp.split(path.sep); // create directories/subdirectories 
console.log(tmp); 
for(var i=0; i<segments.length; i++) { 
    var segment = segments.slice(0, i).join(path.sep); 
    console.log(i, segment.length, segment, fs.existsSync(segment)); 
} 

出力:

/var/folders/ch/pc8wsx1x1_v10hdl7zxnvjqr0000gn/T/somedir 
0 0 '' false 
1 0 '' false 
2 4 '/var' true 
3 12 '/var/folders' true 

質問:インデックス0と1が空の文字列があるのはなぜ

答えて

0

ためsegments.slice(0, i)

最初の反復の、それが最初の要素除外する:

"をスライスにアップ抽出結局含まない"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

第2の反復、それは、パスが分割されたために空の最初の要素はtmp.split(path.sep)で、パスは先頭にスラッシュが付きます。

絶対パスであることがわかっている場合は、i = 2でループを開始します。相対パスを入力できる場合は、i = 1から開始し、絶対パスで作業する場合はインデックス0の空白要素を処理する必要があります。

+0

これは正しく書かれているはずです。 – user2727195

関連する問題