什么是很好的使用void()

时间:2012-10-21 14:14:33

标签: javascript

编辑:澄清一下:我的问题并不关心如何使用空洞,但是空洞是否真的有用。我之所以这样问,是因为人们似乎使用它的方式非常有价值......

void运算符的MDN Reference为使用中的运算符提供了示例

<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的好例子吗?

4 个答案:

答案 0 :(得分:5)

用例#1,void(0):如果您想要引用真实undefined(而不仅仅是变量,因为它可以被覆盖),您不需要void 。你可以这样做:(function(){}())

用例#2,void(exp):如果您想执行代码然后返回undefined,您当然可以通过将代码包装在函数中来完成:(function(){ exp; return undefined; }())。< / p>

所以,不,我们不需要void。它什么都不做。它比上述解决方案短,所以如果你喜欢简短而晦涩的代码,你可以使用它(但请不要)。

答案 1 :(得分: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();
}

您可以阅读我为何这样做here

答案 2 :(得分:1)

void是一个用于返回undefined值的运算符,因此浏览器将无法加载新页面。关于void运算符的一个重要注意事项是它需要一个值,并且不能单独使用。

实施例: -

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

输出继电器: -

 I am a link

答案 3 :(得分:0)

void(0)用于返回“undefined”,你可以在那里写“undefined”,也不要使用那个javascript:在href属性中 - 因为它太旧而且对于禁用javascript的用户不起作用,如果有人在新窗口中打开它,他们会看到像javascript:showPopup(27);