Node.js为什么它一次只打印一个

时间:2016-02-17 21:22:15

标签: javascript node.js terminal

我使用node.js列出txt文件中的项目。我有它从终端打印出来,但我希望它接受更多参数,现在它接受它们但只打印一个(最后一个)我希望它打印参数中的每个项目并列出它们。



// Make sure we got a filename on the command line.
if (process.argv.length < 3) {
  console.log('Usage: node ' + process.argv[1] + ' FILENAME');
  process.exit(1);
}
// Read the file and print its contents. And split into an array after each space
var fs = require('fs') , filename = process.argv[2];
var array = fs.readFileSync('dependencies.txt').toString().split('\n');
	//console.log(array[0]);

   


if(process.argv.length >= 3){
  for(var j = 3; j < process.argv.length; j++)
  var test = process.argv[j];
  functionName(test);
}
  



function functionName(test){    
  for(var i = 0; i < array.length; i++ ){
   var pattern = /([^\s]+)/g;
   var line = pattern.exec(array[i]);
 if(line && test == line[0]){
 console.log(array[i]);
    }
  }
}




//fs.readFile(filename, 'utf8', function(err, data) {
 // if (err) throw err;
 // console.log('OK: ' + filename);
 // console.log(data)
//});
&#13;
&#13;
&#13;

how it prints out

1 个答案:

答案 0 :(得分:1)

for循环只能包含一个语句,因此如果您需要多个语句,则必须将其包含在block statement中。
(谢谢@paulpro)

我只想为所有for循环添加一个块语句,除非它足够短以便在一行上可读,否则它的可读性更强。

for(var j = 3; j < process.argv.length; j++) {
  //var test = process.argv[j];
  functionName(process.argv[j]);
}
let len = process.argv.length, j = 3;
for (;j<len;j++) functionName(process.argv[j]);