【问题标题】:What's a good use of void()void() 有什么用
【发布时间】:2012-10-21 14:14:32
【问题描述】:

编辑:澄清一下:我的问题不关心如何使用 void,而是 void 是否真的有用。我问这个是因为人们似乎使用它的方式非常令人反感......

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

【问题讨论】:

标签: javascript


【解决方案1】:

用例 #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();
    }
    

    你可能会读到我为什么这样做here

    【讨论】:

    • +1 表示对 void 的善用。如果上下文是 undefined 是可变的旧浏览器,我猜你使用 void ?编辑:感谢您将我指向该网站,以前从未听说过...
    • 伙计们,您在我的回答中错过了用例 #1 的要点。你不需要 void 来测试undefined,因为(function(){}()) === void(0)。所以说“不需要void,除非你想测试未定义”是完全错误的。
    • 是的,先生,您是对的。它更简洁。这是否使此答案中的陈述正确?只阅读此答案的新手会认为需要void 才能正确测试undefined。不是。
    • 顺便说一句,即使void 没有内置到语言中,它也可以在一行中实现。 var void2 = function() {}。它可以像 void2(0) 一样使用,也可以像在另一个示例 void2(document.body.style.backgroundColor='green') 中一样使用。这是一种完全多余的语言结构。
    • 我完全同意 - void 不是 必需 来测试 undefined。我会改变它。介意删除你的反对票吗?
    【解决方案3】:

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

    例子:-

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

    输出:-

     I am a link
    

    【讨论】:

    • void 运算符表示 undefined。它不会返回 null。是运营商。不是函数。
    • 已更正并感谢更新我 :)
    【解决方案4】:

    void(0) 用于返回“未定义”,您可以只写“未定义”,也不要在 href 属性中使用 javascript: - 因为它太旧了,它不适用于禁用 javascript 的用户,如果有人在新窗口中打开它,他们会看到类似 javascript:showPopup(27);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2011-08-01
      • 1970-01-01
      • 2012-07-16
      相关资源
      最近更新 更多