Node.js中的成语callback
按照约定在Node中,asynchronouscallback接受一个错误作为它的第一个参数。 如果成功,则第一个参数不能出现。 我个人习惯写
callback(undefined, result);
在这种情况下。 但是,我在其他人的代码中看到
callback(null, result);
盛行。 是否“正式”logging在任何地方? 哪两个选项是惯用的节点? 有没有什么重要的理由可以相互比较?
如果我们将“惯用节点”解释为“什么节点本身”,那么null
就是惯用的。 如果你在节点提示符(在* nix机器上)input这个值,你将会得到结果:
require("fs").readFile("/dev/null", function (err) { console.log(err === null) })
我已经尝试了其他来自fs
模块的callback,并得到了相同的行为。 我没有testing过所有使用callback函数的Node API的地方。
我还没有find一个引用,指出在这种情况下,Node 必须将err
设置为null
。
如果您担心是否使用null与undefined,则使用null。 严格来说,在JavaScript中undefined
被认为是exception的。
你可以阅读更多关于在JavaScript和null和undefined之间的区别是什么? 。
还有一个关于Node.jscallback约定的好post – http://blog.gvm-it.eu/post/22040726249/callback-conventions-in-node-js-how-and-why 。
在出错的情况下, undefined
和null
总是被认为是相同的。
你可以使用他们两个。 人们只使用null,因为它更短。
如果您正在检查错误,则可以使用if (err == null) { ... }
方法在一个语句中检查null和undefined。