在Javascript(或节点)中,函数';谁的论点得到承认?
我在学习Node.js(虽然我不是Javascript方面的专家,但我理解并编写了代码)。现在,尝试使用Node.js时,我陷入了以下代码:在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表示读取抛出的文件时出现的任何错误,数据
var fs = require('fs');
fs.readFile('/etc/passwd', function (err, data) {
if (err) throw err;
console.log(data);
});
以下是我的一些困惑:
匿名函数有两个参数:err和data,函数内部err表示读取抛出的文件时出现的任何错误,数据是文件的实际内容
function(data, err) {} ?
function(data, err) {} ?
对于上面的例子,areerr和data是预定义的关键字(我怀疑不是)?这就是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确实是