1

私は Node.js を学んでいました (私は Javascript の専門家ではありませんが、理解してコードを書いています)。さて、Node.js をいじろうとすると、次のコードで行き詰まりました。

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

これが私の混乱の一部です。無名関数はerrdataの 2 つの引数を取り、関数内で err はスローされたファイルの読み取り中にエラーが発生し、data はファイルの実際の内容です。

  1. さて、関数はどのようにしてエラーとファイルの内容を認識し、区別するのでしょうか?
  2. 最初の引数は常にエラーで、2 番目の引数は常にコンテンツ データですか?
  3. このように書くと、関数内にどのようなエラーデータが含まれますか

    function(data, err) {} ?
    

これは、2 つの引数だけが渡される単純な関数です。いくつかの引数に対してどのように機能しますか?

関数内では、data は data で、err は error です。

上記の例では、errdataは事前に定義されたキーワードですか (いいえとは思えません)。

4

3 に答える 3

3

引数は、関数の呼び出し中に渡された順序で値を取得します。使用する予定の関数のAPI ドキュメントを読むことで、正しい順序を確認できます。

したがって、関数を に変更するfunction(data, err) {}data、エラーが含まれ、errデータが保持されます:)

今後の作業を容易にするために、コールバックを受け入れるほぼすべての Node.js 関数で、最初の引数がエラーになり、2 番目の引数が関数の戻り値になります。

于 2013-10-18T19:02:03.327 に答える
2

1)。さて、関数はどのようにしてエラーとファイルの内容を認識し、区別するのでしょうか?

引数の順序は、関数が Node から呼び出されるときに認識されます。

2)。最初の引数は常にエラーで、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

編集
ドキュメントでこれを読んで、疑問が解消されたことを願っています:

コールバックには 2 つの引数 (err、data) が渡されます。data はファイルの内容です。

于 2013-10-18T19:01:25.900 に答える