按照Node中的惯例,异步回调接受错误作为其第一个参数。如果成功,第一个参数不得出现。我个人习惯写
callback(undefined, result);
在那种情况下。但是,我在其他人的代码中看到了
callback(null, result);
盛行。它是正式的#34;记录在哪里?这两个选项中哪一个是惯用节点?是否有任何重要理由选择一个而不是另一个?
答案 0 :(得分:9)
如果我们将“惯用节点”解释为“节点本身的作用”,那么null
将是惯用的。如果您在Node提示符下输入此内容(在* nix机器上),您将获得true
:
require("fs").readFile("/dev/null", function (err) { console.log(err === null) })
我尝试过来自fs
模块的其他回调并获得相同的行为。我没有在使用回调的Node API中测试所有位置。
在这种情况下,我找不到一个引用,指出Node 必须将err
设置为null
。
答案 1 :(得分:3)
如果您担心是否使用null vs undefined,请使用null。严格来说,在JavaScript undefined
中被认为是异常的。
您可以在What is the difference between null and undefined in JavaScript?了解更多信息。
还有关于Node.js回调约定的好文章 - http://blog.gvm-it.eu/post/22040726249/callback-conventions-in-node-js-how-and-why。
答案 2 :(得分:0)
如果出现错误,undefined
和null
始终被视为相同。
您可以同时使用它们。人们只使用null,因为它更短。
如果您正在检查错误,可以使用if (err == null) { ... }
方法在一个语句中检查null和undefined。