1

I was learning Node.js (even though I am not an expert in Javascript but I understand and write code on it). Now, trying to play with Node.js, I just got stuck in this code:

var fs = require('fs');
fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});

Here is some of my confusions: The anonymous function is taking two arguments: err and data and inside the function err is for any error while reading the file which is thrown and data is the actual contents of the file.

  1. Well, how the function knows and differentiate between which one is error and which one is content of the file?
  2. Does it do like: the first argument is always an error and second argument is always the content data?
  3. what err and data will have inside the function if I write like this

    function(data, err) {} ?
    

This is just a simple function being passed just two arguments. How it works for some more arguments?

How inside the function, data is data and err is error?

For the above example, are err and data are pre-defined keywords (I doubt NO)?

4

3 回答 3

3

参数将按照调用函数时传递的顺序获取值。您可以通过阅读您计划使用的函数的API 文档来查看正确的顺序。

因此,如果您将函数更改为function(data, err) {}data则将包含错误,而err将保存数据:)

为了简化您未来的工作,几乎每个接受回调的 Node.js 函数,第一个参数将是错误,第二个参数是函数的返回。

于 2013-10-18T19:02:03.327 回答
2

1)。那么,函数如何知道并区分哪个是错误,哪个是文件内容?

当从 Node.js 调用函数时,参数的顺序是已知的。

2)。它是否喜欢:第一个参数总是错误,第二个参数总是内容数据?

是的。

3)。如果我这样写,函数内部会有什么错误和数据

function(data, err) {} ?

它们将具有相同的值,它们根本不会被使用。

对于上面的例子,err 和 data 是预定义的关键字吗?

没有。您甚至可以重命名它们,它们仍将绑定到相同的值。

于 2013-10-18T19:01:48.547 回答
1

这就是它在 API 中的定义方式

在这里检查

正如@gustavohenke 所指出的,如果您将其定义为

function(data, err){ ... }

然后data将举行error log并将err举行file data

编辑
希望您在文档中阅读此内容,它应该可以消除您的疑问:

回调传递了两个参数 (err, data),其中 data 是文件的内容。

于 2013-10-18T19:01:25.900 回答