什么是void()的好用途?

3

编辑:澄清一下:我的问题并不涉及void如何使用,而是void是否真的有用。我之所以问这个问题,是因为人们似乎使用它的方式让人感到很不舒服...

MDN参考文档介绍了void操作符的使用示例。

<a href="javascript:void(0);">Click here to do nothing</a>
<a href="javascript:void(document.body.style.backgroundColor='green');">Click here for green background</a>

现在我们处理点击事件的方式并不完全像以前那样。

在这个世界上有没有void的用处?可以有人给我展示一下使用void的好例子吗?


2
可能是“在JavaScript中使用void的目的是什么”的重复问题。 - Bergi
4个回答

5
使用案例#1,void(0):如果您想要对真正的undefined进行引用(而不仅是变量,因为它可能被覆盖),则不需要使用void。您可以通过以下方式获取:(function(){}())
使用案例#2,void(exp):如果您想执行代码然后返回undefined,当然可以通过将代码包装在函数中来实现:(function(){ exp; return undefined; }())
所以,不,我们不需要void。它没有任何独特之处。它比上述解决方案更短,因此如果您喜欢简短和晦涩的代码,可以使用它(但请不要这样做)。

2

Jakob展示了一些void的实际用例。然而,正如他所提到的,void并不是真正必需的,但我使用它来测试undefined。我使用它来创建自己的typeOf函数:

function typeOf(value) {
    if (value === null) return "null";
    if (value === void(0)) return "undefined";
    return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}

您可以在这里了解我为什么这样做。


+1 表示你很好地使用了 void。我猜你在使用 void 是因为上下文是一个旧的浏览器,其中 undefined 是可变的?编辑:感谢你指向那个网站,我以前没有听说过它... - Julian Krispel-Samsel
各位,你们没有理解我回答中用例 #1 的重点。你不需要使用 void 来测试 undefined,因为 (function(){}()) === void(0)。因此说,“除非你想测试 undefined,否则不需要使用 void”是完全错误的。 - Jakob
是的先生,您说得对。这更加简洁。这是否使得此答案中的语句正确?只阅读此答案的新手会认为需要使用void来正确测试undefined。实际上并不需要。 - Jakob
顺便说一下,即使 void 不是语言内置的,它也可以在一行代码中实现。var void2 = function() {}。它可以像这样使用 void2(0) 或者像另一个例子中那样使用 void2(document.body.style.backgroundColor='green')。这是一个完全多余的语言结构。 - Jakob
我非常同意 - void不是检查undefined所必需的。我会修改它。能取消你的投票吗? - Aadit M Shah

1

void是一个运算符,用于返回一个undefined值,以便浏览器无法加载新页面。需要注意的一点是,void运算符需要一个值,不能单独使用。

例如:

 <a href="javascript: void(0)">I am a link</a>

输出:-

 I am a link

1
void 运算符表示 undefined。它不会返回 null。它是一个运算符,而不是函数。 - Aadit M Shah
已更正,谢谢你的更新 :) - Rahul Tripathi

0

void(0)用于返回"undefined",你可以直接写"undefined",同时不要在href属性中使用javascript:,因为它太老了,对于禁用JavaScript的用户将无法工作,而且如果有人在新窗口打开它,他们会看到类似javascript:showPopup(27);的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接