为什么会有人写:
function () {
if (err) {
return void console.log(err)
}
}
而不是:
function () {
if (err) {
console.log(err)
return
}
}
有没有人使用void
运营商?我已经看到它在上面的示例中使用,但非常非常少。
更新
console.log
可能是一个糟糕的例子,因为它本身会返回void
。让我展示一下我在express
应用中看到的另一种用法:
function (req, res) {
...
// Some error occurred
if (err) {
return void res.send(foo)
// `send` returns a `Response` instance
}
}
例如,在eslint
的源代码中,它被大量使用:
答案 0 :(得分:1)
上述两个函数正在做同样的事情,除了前者写成一行。 void最常用于超链接的内容,浏览器可能会解释返回的结果并尝试显示结果。
在更新的代码中,空白很重要,因为该函数的作者想要在一行中执行以下操作。
因此他/她使用void 将结果转换为未定义的
答案 1 :(得分:1)
一个用例是当undefined
本身没有做同样的事情时总是返回undefined
。在大多数现代浏览器中,window.undefined
不可写,但可以被镜像为有效的变量名。好吧,我不会说它是一个真实的情况,但是回归undefined
是一种万无一失的方式。
function whendefined(){
var undefined = 'defined';
return undefined;
}
console.log(whendefined());
function neverdefined(){
var undefined = 'defined';
return void 0;
}
console.log(neverdefined());

MDN community docs也有相同的内容
此运算符允许插入产生副作用的表达式 到表达式为undefined的表达式 期望。 void运算符通常仅用于获取未定义的运算符 原始值,通常使用" void(0)" (相当于"无效 0&#34)。在这些情况下,可以使用未定义的全局变量 (假设它尚未分配给非默认值)。
es-lint示例中的使用可能只考虑文件大小,因为它们不会以任何方式缩小。
"undefined".length; //9
"void 0".length;//6
10,000次下载可以节省~30,000个字节。
Consistent Return与此直接无关,它只是确保显式且一致地指定返回值。在整个代码中,使用void 0的考虑因素似乎是文件大小的考虑因素,而可能某些旧样式编码的作者从旧浏览器中继承而来{{1}可以被覆盖。