在Javascript(或节点)中,函数';谁的论点得到承认?

在Javascript(或节点)中,函数';谁的论点得到承认?,javascript,node.js,Javascript,Node.js,我在学习Node.js(虽然我不是Javascript方面的专家,但我理解并编写了代码)。现在,尝试使用Node.js时,我陷入了以下代码: var fs = require('fs'); fs.readFile('/etc/passwd', function (err, data) { if (err) throw err; console.log(data); }); 以下是我的一些困惑: 匿名函数有两个参数:err和data,函数内部err表示读取抛出的文件时出现的任何错误,数据

我在学习Node.js(虽然我不是Javascript方面的专家,但我理解并编写了代码)。现在,尝试使用Node.js时,我陷入了以下代码:

var fs = require('fs');
fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});
以下是我的一些困惑: 匿名函数有两个参数:errdata,函数内部err表示读取抛出的文件时出现的任何错误,数据是文件的实际内容

  • 那么,函数如何知道并区分哪一个是错误,哪一个是文件内容
  • 它是否像:第一个参数始终是错误,第二个参数始终是内容数据
  • 如果我这样写的话,errdata在函数中会有什么

    function(data, err) {} ?
    
    function(data, err) {} ?
    
  • 这只是一个只传递两个参数的简单函数。对于更多的争论,它是如何工作的

    在函数内部,data是data,err是error


    对于上面的例子,areerrdata是预定义的关键字(我怀疑不是)?

    这就是API中定义的方式

    检查

    正如@gustavohenke所指出的,如果你把它定义为

    然后
    数据
    将保持
    错误日志
    错误
    将保持
    文件数据

    编辑
    希望您在文档中阅读此内容,它本应消除您的疑虑:

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


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

    检查

    正如@gustavohenke所指出的,如果你把它定义为

    然后
    数据
    将保持
    错误日志
    错误
    将保持
    文件数据

    编辑
    希望您在文档中阅读此内容,它本应消除您的疑虑:

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

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

    从节点调用函数时,参数的顺序是已知的

    2) 。它是否像:第一个参数始终是错误,第二个参数始终是内容数据

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

    function(data, err) {} ?
    
    function(data, err) {} ?
    
    它们将具有相同的值,只是不会被使用

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

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

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

    从节点调用函数时,参数的顺序是已知的

    2) 。它是否像:第一个参数始终是错误,第二个参数始终是内容数据

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

    function(data, err) {} ?
    
    function(data, err) {} ?
    
    它们将具有相同的值,只是不会被使用

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


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

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

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


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

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

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


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

    我从该链接复制了代码,它是:fs.readFile(filename,[options],callback),但回调是传递参数的函数。这是如何识别这样传递的两个参数之间的关系的?这是函数定义中的一个简单if;如果第二个参数是一个函数,则不会使用
    options
    。如果它是一个对象,那么第三个参数必须是回调。是的,我看到了,非常清楚,我现在明白了。谢谢。哦,是的,在他们的文件里,我没有看到。我现在完全明白了:-)我从那个链接复制了代码,它是这样的:fs.readFile(filename,[options],callback),但callback是一个传递参数的函数。这是如何识别这样传递的两个参数之间的关系的?这是函数定义中的一个简单if;如果第二个参数是一个函数,则不会使用
    options
    。如果它是一个对象,那么第三个参数必须是回调。是的,我看到了,非常清楚,我现在明白了。谢谢。哦,是的,在他们的文件里,我没有看到。我现在完全明白了:-)好的,我所有的困惑都消失了,非常感谢你。。。所以,总是有关于传递参数的优先级的预定义和编写的函数,对吗?javascript一开始真的很奇怪,但我喜欢它。JS是我所知道的最具动态性的语言,这就是为什么它一开始对每个人来说都很复杂的原因。@jeewan我还编辑了答案,添加了很多关于nodeThanks中回调的更多信息。我现在完全明白了。好了,我所有的困惑都消失了,非常感谢你。。。所以,总是有关于传递参数的优先级的预定义和编写的函数,对吗?javascript确实是