-1

所以,我正在阅读 Node.js learnyounode 教程(这很有趣),但我对 javascript 并不陌生。其中一个请求是让用户编写一个接受目录和文件扩展名作为参数的程序,然后继续 ls 匹配给定扩展名的文件。

在通过函数传递数据的各个地方检查我的参数时,我无法让 Node.js 允许我将其他参数传递给内置函数的回调函数。

例如,我可以运行以下代码片段,传递错误、路径和扩展名,并希望查看所有传递的参数,但我只看到参数对象中的错误和数据,而忽略了“ext”变量。

var fs = require("fs"), path = require("path")
var dir = process.argv[2], ext = process.argv[3];

fs.readdir(dir, function (err, data, ext) {
  console.log(arguments);
  });

想要这个功能的原因是为了避免破坏函数范围来检索 ext 的值。

我可以整天用自定义函数做这种事情,但内置函数有点不宽容。

谢谢,鲍勃

4

2 回答 2

0

与 irc 中的 node.js 人员交谈,结果表明 javascript 的工作方式是不需要将范围保持在边界内。默认情况下,Node.js 将模块放在自己的闭包中,因此可以在函数外部访问变量而不会干扰全局命名空间。

在节点 js 和变量范围上找到了这个答案,这可能最符合我的情况,但是当我发布我的问题时不知道这是我需要的。

还在Mozilla 上找到了一些不错的闭包示例。

就个人而言,我认为我对 javascript 的了解比这更好,我希望这个答案可以帮助那些从 C / PHP 背景进入 node.js 的人

于 2016-05-07T17:15:04.847 回答
0

path.extname()最简单的方法是在每个条目名称上使用内置函数:

fs.readdir(dir, function(err, entries) {
  if (err) throw err;
  for (var i = 0; i < entries.length; ++i) {
    if (path.extname(entries[i]) === ext)
      console.log(entries[i]);
  }
});
于 2016-05-06T23:45:57.577 回答